2012-04-17 13 views
2

私はすでにこのコンセプトについて多くの記事があることを知っていますが、私の質問には少し違いがあります。私のページで私はどのように私のJavaScriptを呼び出す必要があります。 href、onclick、またはclickイベントをバインドしますか?

、私はリンクを持っている:

<a id="mylink">click me </a> 

その後、私は使用して動的にHREFを変更しています:

$get('mylink').href = 'javascript:doSomething(id);'; 

を私は上記のコードを複数回呼び出す必要がありますので、私が起こります異なるidパラメータを持つ同じ関数を呼び出すjavascriptコードでhref属性の現在の値を上書きします。

これは私が今使っているものです。しかし、私はOnNavigateAwayを実装してブラウザウィンドウを閉じたときにユーザに警告しようとしていますが、これまでにいくつかのシメムが始まりました。ユーザーがhref属性の値を持つアンカーをクリックすると、IEはこのonNavigateAwayイベントをトリガーします。

だから私はjqueryのクリックイベントで、これらのHREFのを置き換えるために始めた:​​

しかし、このコードを複数回呼び出すことができますので、私は最初のクリックイベントをバインド解除してから再度バインドしていることを覚えている:

function completed(result) { 
$("#mylink").unbind('click'); 
    $("#mylink").click(function (e) { 
    doSomething(result.id); 
    e.preventDefault(); 
    }); 
} 

これは私のjavascriptを処理する良い方法ですか?または、このバインディングとアンバインドの物事は良い練習ですか?

これを行う別の方法は、onclick属性をjavascriptで手動で上書きすることです。

これはどのように処理しますか?

私はあなたの応答を楽しみにしています。

答えて

4

ここでは別のロジックを使用します。

$("#mylink").data("id", id); 
:あなたは idは、このようなコードを持っていることを変更する必要がある場合次に

$("#mylink").on("click", function (e) { 
    doSomething($(this).data("id")); 
    e.preventDefault(); 
}); 

:代わりにクリックイベントを再割り当てするの、私は「グローバル」は、イベントがこのプロパティを使用する]をクリックして、その後いくつかのデータのプロパティを変更します

このようにデータを変更する呼び出しを繰り返すと、最後のものだけが影響します。

$("#mylink").data("id", 5); 
$("#mylink").data("id", 6); 
$("#mylink").data("id", 7); 

クリックすると、機能に7が渡されます。

Live test case

場合、要素は、動的に作成され、あなたはjQueryの1.7を使用するか、あなたも、これらの動的に作成された要素をキャッチする.onを使用することができ、上記していると想定されます。

$("body").on("click", "#mylink", function (e) { 
    doSomething($(this).data("id")); 
    e.preventDefault(); 
}); 
+0

私はあなたが何を意味するかを取得、私は確認する必要がありますクリックイベントがまだバインドされている場合そうでない場合は、クリックイベントをバインドしますか? – ThdK

+0

@ThdKは '$(document).ready(function(){...})の中にラップされています。 –

+0

これは動的に作成されます。質問を少し更新したので、応答パラメータを渡す関数があることがわかります。レスポンスはid属性を含むオブジェクトです。 – ThdK

関連する問題