33

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

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

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

当我知道只有一个元素时,这似乎需要更多的工作。我试过这个...

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

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

4

2 回答 2

28

您应该调用该函数,将您的元素作为其对象传递:

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

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

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

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

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

于 2012-06-07T14:55:33.043 回答
21

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

现在在你的情况下,你想要类似的东西

dosomething( $('#divname') );

例如:

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

 doSomething( $('#divname') );

演示

于 2012-06-07T14:52:55.830 回答