2012-06-07 25 views
28

通常、私は自分自身をjqueryの中間ユーザーと見なしますが、これは非常にnoobの問題のように思えます。jqueryセレクタの呼び出し関数

私は関数を実行したいdivが1つあります。私はこれを行う方法を知ってる唯一の方法は、私は一つだけの要素があることがわかっているとき、これは少しより多くの仕事のように思える

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

...何かのようです。私はこれを試しました...

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

...しかし、全体のDOMを書き出します。私はこの1つの要素に対して関数を実行したいだけです。それ、どうやったら出来るの?

+1

'doStuff($( "#のdivname")); '? – Sampson

+0

@JonathanSampson。 LoL、答えが30文字でなければ、私の答えはまったく同じになりました... :) – gdoron

+0

@gdoron実際には最良の方法ではありません。 'doStuff'を後で他のjQuery反復でコールバックとして使用することを防ぐため、' this'ではなくパラメータを参照します。詳細は私の答えを見てください。 @JonathanSampson。 – Sampson

答えて

17

あなたがHTML DOMの各要素がどの2つの要素が同じidを持っていないことを意味しているユニークなidを持っていることを維持する場合には、$('#divname')は常に単一の要素を返し、$('#divname').each()は1時間に実行されます。 1つより多くない。

今すぐあなたのケースにしたい例えば

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/

関連する問題