在jquery选择器上调用函数

geo*_*rtz 31 jquery

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

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

$("#divname").each(function(){
  dostuff();
});
Run Code Online (Sandbox Code Playgroud)

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

$("#divname", function(){ 
  console.log($(this));
});
Run Code Online (Sandbox Code Playgroud)

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

Sam*_*son 26

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

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

doStuff.call( $("#foo")[0] );
Run Code Online (Sandbox Code Playgroud)

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

$(".bar").each( doStuff );
Run Code Online (Sandbox Code Playgroud)

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


the*_*dox 20

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

现在在你的情况下你想要的东西

dosomething( $('#divname') );
Run Code Online (Sandbox Code Playgroud)

例如:

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

 doSomething( $('#divname') );
Run Code Online (Sandbox Code Playgroud)

DEMO