2012-06-07 114 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/

相關問題