2011-10-22 8 views
2

私は関数SomeFunction(event)を持っています - 'tap'イベントを( '#selectorid')要素にバインドしたいと思います。右の構文は次のとおりです。バインドイベントで関数にイベントを渡す方法 - jquery mobile

は、私が使用する必要があります。

$('#selectorid').unbind().bind('tap',SomeFunction); 

か:

$('#selectorid').unbind().bind('tap',function(event){ 
    SomeFunction(event);});}); 

か:

$('#selectorid').unbind().bind('tap',function(){ 
     SomeFunction(event);}); 

または

$('#selectorid').unbind().bind('tap',SomeFunction(event)); 

Iよ、このことについて完全に混入して..私は携帯lateset RC2のjqueryのを使用してい

をいくつかの明確化のために喜んでいるだろう

+0

.bindの前に.unbind()を呼び出す理由を聞いてもよろしいですか? – b01

+0

何らかの理由で、私はカメラから取得したイメージでバインディングを継承し、キャンバス要素に再描画するためです。だけでなく、それは私の機能を実行していないキャンバス画像のタップは電話カメラに戻ります..私は継承されたイベントのオプションを排除することをよりよく理解した – alonisser

答えて

2

#1すべき仕事を終わらせるには、グローバルに「SomeFunction」を定義する必要があります。

$("#selectorid").unbind().bind("tap", SomeFunction); 

何が起こるだろうと、あなたがしなければならないすべてがそうのように、SomeFunctionを定義で、イベントが発生したときに、それは最初のパラメータだとして、それは同じ「SomeFunction」を呼び出してイベントを渡しますです:

SomeFunction(p_event) 
{ 
    // Do cool evil stuff with the event parameter like cancel the tap event >:) 
    p_event.preventDefault(); 
    // That's it. :) 
} 

#2になるももう一度、「Somefunction」をグローバルに定義する必要があります。

$("#selectorid").unbind().bind("tap", function(p_event) 
{ 
    SomeFunction(p_event); 
}); 

#2の場合はどうなりますか、無名関数は「SomeFunction」を呼び出し、ちょうど最初の例のように、余分なステップで、イベントに沿って通過するということです。だから私は最初の方法を好む理由です。 :)

#3と#4はエラーがあり、前の2つのバージョンとはちょうど悪いです。

また、グローバルに定義されていることは、「SomeFunction」がオブジェクト、プラグイン、またはクロージャーで定義されているのではなく、ページのどこでも使用できることです。その場合は、イベントハンドラで呼び出すと、未定義のエラーが生成される可能性があるためです。あなたの疑問がある場合、私は文字列に二重引用符を使用して、パラメータ変数を 'p_'でプリペンドしたいので、関数内で同じ変数名を使用して、2つの変数を簡単に区別することができます。それは私の個人的な命名規則です。 :)

+0

ありがとう@ b01 - 1つの質問 - 私は本当にイベントを呼び出す必要があります。 preventDefault();?それともイラストレーションのためだけですか? – alonisser

関連する問題