好吧,通常我认为自己是jquery的中间用户,但这似乎是一个非常noob的问题,我不太确定如何编码。
我有一个div想要运行一个函数。我知道如何做到这一点的唯一方法就是......
$("#divname").each(function(){
dostuff();
});
当我知道只有一个元素时,这似乎更有用。我试过这个......
$("#divname", function(){
console.log($(this));
});
......但它写出了整个dom。我只想在这一个元素上运行该函数。我该怎么做?
答案 0 :(得分:26)
你应该call该函数,将你的元素作为对象传递:
function doStuff() {
alert( $(this).html() );
}
doStuff.call( $("#foo")[0] );
由于我们构建并调用doStuff
的方式,我们仍然可以将其用作.each
的回调:
$(".bar").each( doStuff );
答案 1 :(得分:19)
如果您认为HTML DOM中的每个元素都具有唯一id
,这意味着没有两个元素具有相同的id
,则$('#divname')
始终返回单个元素,而$('#divname').each()
将跑了一次。不超过一个。
现在你需要像
这样的东西dosomething( $('#divname') );
例如:
function doSomething( el ) {
el.append('<span>hello</span>');
}
doSomething( $('#divname') );
<强> DEMO 强>