2010-09-24 50 views
5

Tôi đang cố gắng chọn liên kết đầu tiên trên trang sau khi trang hoàn toàn tải và chuyển hướng trang đến liên kết trên trang đầu tiên.JQuery - Nhận giá trị bằng cách sử dụng bộ chọn

Tôi hiểu cách sử dụng công cụ chọn, nhưng tôi băn khoăn về cách tôi có thể nhận mục đầu tiên sau khi tải trang. Tôi giả sử khi tôi có giá trị tôi có thể sử dụng

window.location = "http://www.google.com/" 

Để đưa người dùng đến trang thích hợp khi tôi có giá trị của liên kết động.

+0

Bạn đã bao giờ có được điều này giải quyết thành công? Bạn vẫn cần trợ giúp với điều này? – jcolebrand

Trả lời

4
jQuery(document).ready(function() { 
    window.location = jQuery("a[href]:first").attr("href"); 
}); 

Một bộ chọn với pseudo-class :first chọn các yếu tố phù hợp đầu tiên. Để biết thêm thông tin về các bộ chọn, hãy xem jQuery's excellent documentation.

EDIT

Trên thực tế chạy mã của tôi và nhận thấy rằng nó đã được trở về một chuỗi rỗng. Điều này là do đã chọn thẻ a đầu tiên đã xảy ra với không phải có thuộc tính href. Tôi đã thay đổi công cụ chọn để chỉ chọn a thẻ có thuộc tính href.

+0

Tôi tự hỏi nếu nó sẽ không được tốt hơn để sử dụng phương pháp xích '.attr ('href')' trong trường hợp này, chỉ vì anh ấy học jQuery. Tôi nhận ra rằng thuộc tính href sẽ ở đó vì nó là một liên kết, nhưng anh ta cũng có thể sử dụng khái niệm tương tự trên một phần tử khác nếu attr ở đó. (chủ yếu là một bình luận @Ryan, không quá nhiều @Vivn Paliath, nhưng một bình luận tốt cho bình luận) – jcolebrand

+0

@drachenstern - Tôi nghĩ rằng bạn đã bắt gặp tôi ở giữa bản chỉnh sửa - tôi đã thay đổi nó thành 'attr (" href ")' vì lý do chính xác mà bạn đã cung cấp :) –

+0

~ Haha, đẹp ... bạn không ghét khi người khác bắt bạn chỉnh sửa giữa chừng? ;) ... – jcolebrand

3

Đối với công cụ chọn của bạn, hãy sử dụng: trước tiên. Điều này sẽ cung cấp cho bạn thẻ neo đầu tiên trên trang. Sau đó, bạn có thể đặt vị trí thành thuộc tính href của thẻ neo.

Cái gì như:

location = $("a:first").attr("href"); 
1

Bạn có sử dụng cú pháp này một cách tình cờ trong thẻ tập lệnh trong trang của mình không?

$(document).ready(function(){ 
    // Your code here 
}); 
0
$(document).ready(function(){ 
    $('a').each(function(){ 
    if($(this).attr('href').indexOf('http')==0) { 
     window.location = $(this).attr('href'); 
    } 
    }); 
}); 

Mã này sẽ làm việc vì: Nó làm cho chắc chắn trang không mất một thẻ neo tĩnh() và nhầm lẫn nó cho một liên kết. Nó sẽ chỉ sử dụng liên kết đó nếu nó bắt đầu bằng http: và nếu không, nó sẽ chuyển sang lần xuất hiện tiếp theo của thẻ.

+0

~ bạn đã bỏ lỡ một ''' trong mã của bạn ... – jcolebrand

+0

hehe .. và tôi cũng đã có dấu ngoặc sai . Đã cập nhật! Và phụ lục của bạn bên dưới về chức năng sẵn sàng của tài liệu là hoàn hảo. Không nên quên rằng ... – jeffkee

+0

FYI Các phương pháp trên chọn ra 'a [href]' sẽ không hoạt động vì một số liên kết có '#' trong chúng vì bất kỳ lý do gì. – jeffkee

2

Tôi sẽ chỉ ra rằng các chuyển hướng có thể dễ dàng bị đánh bại. Đừng dựa vào điều này vì bất cứ điều gì "an toàn".

Bạn cũng có thể thấy rằng bạn cần neo đầu tiên mà thực sự có một href:

$("a[href]:first").attr("href"); 
+1

Không cần phải xác định phần tử thứ 0 và trên thực tế, điều đó có thể gây ra vấn đề nếu bộ bọc của bạn không chứa phần tử nào? Tôi sẽ viết lại đó là $ ("a [href]: first"). Attr ("href"); – Aaron

Các vấn đề liên quan