2013-09-16 35 views
10

câu hỏi đơn giản:jQuery selector tài liệu tham khảo để tự

Làm thế nào để tham khảo tự mà không sử dụng $.each() ví dụ như khi tôi muốn thiết lập html() sở hữu thuộc tính?

$('*[rel]').html($(this).attr('rel')); // nope 
$('*[rel]').html($(self).attr('rel')); // nah 
$('*[rel]').html($(sender).attr('rel')); // undefined 
$('*[rel]').html($(target).attr('rel')); // still undefined 
$('*[rel]').html($(???).attr('rel')); // this isn't even correct syntax 
$('*[rel]').html($(beer).attr('rel')); // well that would be tasty 
$('*[rel]').html($(woman).attr('rel')); // not in this life 
$('*[rel]').html($(god help me!).attr('rel')); // He probably doesn't even know how to use a computer 
$('*[rel]').html($(i give up).attr('rel')); // unexpected... o'rly? 
+4

_Có lẽ thậm chí không biết cách sử dụng máy tính_ :) – undefined

+1

Bình chọn cho câu hỏi, nếu chỉ cho sự hài hước trong đó ... :) – TheCuBeMan

Trả lời

12

You can pass a function instead of a a string.

$('[rel]').html(function() { 
    return $(this).attr('rel'); 
}); 

Lý do tại sao tất cả các ví dụ của bạn không làm việc là vì trong mỗi trường hợp mã của bạn thực hiện rất lâu trước khi chọn đã được đánh giá. Đây là điều bạn thực sự cần hiểu - thậm chí còn phù hợp hơn khi gọi lại có liên quan, ví dụ: cho AJAX hoặc bộ hẹn giờ: Khi bạn đặt mã vào một nơi nào đó nó được thực thi tại thời điểm này. Vì vậy, foo(some code here) sẽ luôn luôn thực thi mã là một phần của đối số hàm bất kể số foo là gì. Lý do duy nhất để tránh điều này là truyền một hàm có chứa mã này - đó là biểu thức hàm được đánh giá (đánh giá thành một hàm có thể gọi). Sau đó, chức năng thực tế (mà rõ ràng là cần phải mong đợi một cuộc gọi thay vì một giá trị đơn giản) có thể gọi các chức năng được thông qua bất cứ khi nào nó thích hợp.

+0

Ok. Tôi hiểu rằng js dựa trên callbacks, nhưng chắc chắn rằng từ lâu rồi, ở một vùng đất xa xôi, xa xôi, có một cô gái trẻ xinh đẹp ... vâng, và cô ấy có máy tính, trong đó phiên bản cũ, cũ của j, j, jQuery 'sender' hoặc' self' đã hoạt động. Nhưng tôi có thể sai về cô gái, khi tôi còn nhỏ, mỗi cô gái đều xinh đẹp. –

+0

Vâng, tôi nghĩ rằng cô gái khiến bạn nghĩ những điều kỳ lạ - về mặt kỹ thuật thì điều bạn không thể làm được là đã làm được như vậy. – ThiefMaster