我正在尝试在 $(this) 选择器中“选择”一个 img。我知道我可以通过使用找到它,.find('img')
但这可能吗:
$("img",this)
?
做到这一点的最佳方法是什么?
原来代码
<a class="picture" href="test.html">
<img src="picture.jpg" alt="awesome">
</a>
我正在尝试在 $(this) 选择器中“选择”一个 img。我知道我可以通过使用找到它,.find('img')
但这可能吗:
$("img",this)
?
做到这一点的最佳方法是什么?
原来代码
<a class="picture" href="test.html">
<img src="picture.jpg" alt="awesome">
</a>
做到这一点的最佳方法是什么?
两者$(this).find('img')
和$('img', this)
是等价的。
从文档:
在内部,选择器上下文是用 .find() 方法实现的,所以 $('span', this) 等价于 $(this).find('span')。
这是一种完美合理的做法。
所以你会喜欢:
$('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 中搜索。但它消除了脚本的灵活性。
是的,你可以这样做......无论如何它们是等价的,所以这只是你的“句法品味”的问题:
在内部,选择器上下文是用 .find() 方法实现的,所以 $('span', this) 等价于 $(this).find('span')。
没关系,选择你喜欢的那个,这主要是一个风格的选择。
jQuery$(selector, context)
通过在幕后执行$(context).find(selector)
or(如果context
已经是 jQuery 实例)来处理表单context.find(selector)
,因此理论上find
表单的效率稍高一些,但实际上并不重要。
为什么不能用.find('img')
?它对我有用:http: //jsfiddle.net/nnmEY/
我正在尝试在 $(this) 选择器中“选择”一个 img。
var myImg = $(this).find("img");