Đó là một hoàn hảo một cách hợp lý cách làm việc đó.
Vì vậy, bạn sẽ làm như sau:
$('a').click(function() {
//if the element dosent change you can use this
//var src = $('img', this).attr('src');
//else use $(this)
var src = $('img', $(this)).attr('src');
alert(src);
return false;
});
Xem: http://jsfiddle.net/xYmwV/
Có thực sự là không có sự khác biệt, vì trong cả hai phương pháp bạn nạp các yếu tố dom, và tìm kiếm nó. Cách thức của bạn là "sạch hơn" và đơn giản hơn, nhưng có thể gây nhầm lẫn hơn :)
Cách nhanh hơn sẽ là $(this).children()
vì nó sẽ không phải tìm kiếm các phần tử, nhưng đi xuống các từ khóa trực tiếp trong DOM. Nhưng nó sẽ đưa ra sự linh hoạt của kịch bản.
Nguồn
2012-04-17 07:57:16
Cả hai cách sẽ hoạt động giống nhau. Tôi không nghĩ rằng nó có ý nghĩa để gọi bất kỳ của hai "tối ưu". – Jon
BTW, bạn luôn có thể sử dụng khoa học: http://jsperf.com/jqslctrtst –
Đúng, chúng giống nhau, nhưng .find() nhanh hơn một chút so với ngữ cảnh. http://jsperf.com/jquery-context-find-and-children-selectors/6 http://jsperf.com/jquery-find-vs-context-2/2 – rucsi