2012-06-07 64 views
28

好吧,通常我会认为自己是jQuery的中间用户,但这似乎是一个很不方便的问题,我不太清楚如何编写代码。调用jQuery选择器上的函数

我有一个div,我想运行一个功能。我知道如何做到这一点的唯一方法是一样的东西......

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

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

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

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

+1

'doStuff($( “#divname”)); '? – Sampson

+0

@JonathanSampson。 LoL,如果没有30个字符的答案限制,我的答案将完全相同...... :) – gdoron

+0

@gdoron这实际上并不是最好的方法。它会阻止你在后面的其他jQuery迭代中使用'doStuff'作为回调,因为你引用了一个参数而不是'this'。详情请参阅我的回答。 – Sampson

回答

17

如果保持在HTML DOM每个元素都有其独特id这意味着没有两个元素具有相同的id,然后$('#divname')总是返回一个单一的元素和$('#divname').each()将运行一次。不超过一个。

现在你的情况,你想要的东西像

dosomething($('#divname')); 

例如:

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

doSomething($('#divname')); 

DEMO

22

你应该call功能,通过你的元素,其目的在于:

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

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

由于这样,我们建立并呼吁doStuff,我们仍然可以使用它作为.each回调:

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

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

相关问题