$(这个+“选择器”)? $(“img”,这个)可能吗?

时间:2012-04-17 07:54:39

标签: jquery

我正试图在$(this)选择器中“选择”一个img。我知道我可以使用.find('img')找到它,但这是可能的:

$("img",this)

最佳方式是什么?

最初的代码

<a class="picture" href="test.html">
    <img src="picture.jpg" alt="awesome">
</a>

6 个答案:

答案 0 :(得分:66)

  

最佳方式是什么?

$(this).find('img')$('img', this)都是等效的。

来自文档:

  

在内部,选择器上下文是使用.find()方法实现的,   所以$('span',this)相当于$(this).find('span')。

http://api.jquery.com/jQuery/

答案 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')。

http://api.jquery.com/jQuery/

答案 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");