jqueryの先頭に追加クリックハンドラ
質問
そして、私に知らせてください。 右の私は、ボタン、グラフや表がたくさん含まれていますページを持っています。 私は、イベントプロパゲーションの停止については読んだことがあると、それは私が使うことになるものです。 私はcerain要素のヘルプを有効にしたいです。私は助けを有効にdivタグの上にカーソルを変更する]チェックボックスを持っています。私は何をしたい通常のクリック動作の前にヘルプ機能を付加されます。
基本的にはこのようなものです。
<input type="button" value="Click me" onclick="alert ('hello')" />
私が欲しいのはチェックボックスがクリックされた場合、私はCSSクラスを追加します(まだ行って)、その後、私は通常、クリックする前にクリックハンドラを追加することです。要素がクリックされると、その後helpfunctionが実行され、デフォルトボタンのクリックハンドラが発生しません。ヘルプ]チェックボックスがオフになっているとき、私はヘルプ機能を削除します。 私は、各要素のためにこれをhardocdeし、チェックボックスがチェックされているかどうかを確認するためにhelperfunctionにチェックを持つことができることを実現します。しかし、私はそれを行うための、より一般的な方法を好むだろう。
おかげ
ジョン
解決
$(":button").each(function() {
// your button
var btn = $(this);
// original click handler
var clickhandler = btn.attr("onclick");
btn.attr("onclick", "return false;");
// new click handler
btn.click(function() {
if ($("#chkbox").attr("checked") == true) {
// TODO: show your help
// TODO: catch event
}
else {
clickhandler();
}
});
});
他のヒント
私が思うに、あなたがバインドで遊んしたい/この場合にはバインド解除 - 参照のhttp:/ /docs.jquery.com/Events/unbind#typefnする
チェックボックスを選択するときにあなたは、ボタンの上に新しいクリックイベントをバインドすることができます - と後でそれらをバインド解除します。
あなたはおそらくもEvent.preventDefaultで動作する必要があります(のhttp://docs.jqueryあなたがそれをしたいいけない場合、デフォルトのクリック動作を抑制するために.COM /イベント/ jQuery.Event の)
あなたはの同類何かを使用します
$("a").bind("click", function(event){
if ($("#helpcheckbox").attr('checked')
{
event.preventDefault();
// do something
}
});
多くのコードがなければ、より正確には難しいます。