我正试图在$(this)选择器中“选择”一个img。我知道我可以使用.find('img')
找到它,但这是可能的:
$("img",this)
?
最佳方式是什么?
最初的代码
<a class="picture" href="test.html">
<img src="picture.jpg" alt="awesome">
</a>
答案 0 :(得分:66)
最佳方式是什么?
$(this).find('img')
和$('img', this)
都是等效的。
来自文档:
在内部,选择器上下文是使用.find()方法实现的, 所以$('span',this)相当于$(this).find('span')。
答案 1 :(得分:5)
这是一个完美合理的方式。
所以你会这样做:
$('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;
});
请参阅:http://jsfiddle.net/xYmwV/
实际上没有区别,因为在这两种方法中都加载了dom元素并进行搜索。你的方式是“更清洁”和更简单,但可能更令人困惑:)
更快的方法是$(this).children()
,因为它不必搜索元素,而是直接在DOM中下传。但它取消了脚本的灵活性。
答案 2 :(得分:4)
是的,你可以这样做......无论如何它们都是等价的,所以这只是你的'句法品味'的问题:
在内部,选择器上下文是使用.find()方法实现的, 所以$('span',this)相当于$(this).find('span')。
答案 3 :(得分:2)
这并不重要,选择您喜欢的,它主要是一种风格选择。
jQuery通过执行$(selector, context)
或(如果$(context).find(selector)
已经是一个jQuery实例)context
来处理表单context.find(selector)
,所以在理论上{{1} } form 略微 更有效率,但不是以任何可能重要的方式。
答案 4 :(得分:0)
为什么不能使用.find('img')
?它适用于我:http://jsfiddle.net/nnmEY/
答案 5 :(得分:0)
我正试图在$(this)选择器中“选择”一个img。
var myImg = $(this).find("img");