在jquery选择器上调用函数

时间:2012-06-07 14:51:02

标签: jquery

好吧,通常我认为自己是jquery的中间用户,但这似乎是一个非常noob的问题,我不太确定如何编码。

我有一个div想要运行一个函数。我知道如何做到这一点的唯一方法就是......

$("#divname").each(function(){
  dostuff();
});

当我知道只有一个元素时,这似乎更有用。我试过这个......

$("#divname", function(){ 
  console.log($(this));
});

......但它写出了整个dom。我只想在这一个元素上运行该函数。我该怎么做?

2 个答案:

答案 0 :(得分:26)

你应该call该函数,将你的元素作为对象传递:

function doStuff() {
    alert( $(this).html() );
}

doStuff.call( $("#foo")[0] );

由于我们构建并调用doStuff的方式,我们仍然可以将其用作.each的回调:

$(".bar").each( doStuff );

小提琴:http://jsfiddle.net/jonathansampson/WuyJc/

答案 1 :(得分:19)

如果您认为HTML DOM中的每个元素都具有唯一id,这意味着没有两个元素具有相同的id,则$('#divname')始终返回单个元素,而$('#divname').each()将跑了一次。不超过一个。

现在你需要像

这样的东西
dosomething( $('#divname') );

例如:

function doSomething( el ) {
   el.append('<span>hello</span>');
}

 doSomething( $('#divname') );

<强> DEMO