如何在单个jQuery对象上执行函数?

3

我经常使用jQuery中的each方法,例如以下代码:

 $('#thing img').each(function(){
     //do some stuff
 });

...其中函数在jQuery对象中的每个元素上执行。 是否有一种方法/语法可以在对象中仅针对第一个匹配的元素执行操作?

我想象中的是这样的:

 $('#thing img').do(function(){
     //do some stuff
 });

我不需要使用jQuery,但是可以使用它,因为相关应用程序已经在使用。

5个回答

3

不要把问题复杂化:

var thisImg = $('#thing img')[0];
//do some stuff with thisImg

2
你可能想提到返回的对象不再是 jQuery 对象。 - alex
each函数内部的this也不是一个jQuery对象,希望提问者不会感到困惑。 - Thomas Li

2
你可以使用eq选择器。
尝试:
$('#thing img').eq(0).each(function(){
     //do some stuff
 });

或者

$('#thing img:eq(0)').each(function(){
     //do some stuff
 });

或(基于@John的输入)
   $('#thing img').first().each(function(){
         //do some stuff
     });

1
还有一个等效的.first(),一眼就能看出来可能更明显。 - John Flatness
我明白你的意思。在发布问题时,我意识到jQuery方法必须天生就设计用于处理具有多个组件元素的对象。 - Isaac Lubow

2

只需要将选择器限制为第一个元素,就像这样:

$('#thing img:eq(0)').each(function(){
 //do some stuff on the first response only
});

1

当你的任务完成后,使用return false语句来中断循环。

 $('#thing img').each(function(){
     //do some stuff for 1st matched item then

return false;
 });

1

请查看这个但不是$(this)

(function($){
    $.fn.me = function(func) {
        func.call(this[0]);
        return this;    
    }
})(jQuery);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接