2つの異なるセレクターを処理するために1つのコードに結合したい2つのセレクターがあります。
私の現在のコードは次のとおりです。
var button_b=$("#button_b");
$('#button_a', button_b).on("click, dblclick", function(){
//do stuff
});
ただし、これは機能していないようです。
2つの異なるセレクターを処理するために1つのコードに結合したい2つのセレクターがあります。
私の現在のコードは次のとおりです。
var button_b=$("#button_b");
$('#button_a', button_b).on("click, dblclick", function(){
//do stuff
});
ただし、これは機能していないようです。
私はまだ2つの別々のセレクターに言及し、それらを1行のコードで別々のイベントにバインドする方法を探しています
次の状況を考えてみましょう
$('input:text#voucher_id, button.nav').bind('click keydown', function(e){ // find nav functions to keydown events on #voucher_id and nav buttons
reload(e,'<?php echo $aVeryLongUrlDynamicallyGenerated; ?>', $('#voucher_id').val(),$('#doctype').val());
});
コードから明らかなように、同じ関数をボタンとkeydown
textFieldをクリックするようにバインドしたいと思います#voucher_id
が、上記のアプローチを使用することで、何が起こっているかは明らかでありkeydown
、ボタンで同じ関数をアクティブにしています。望ましくない振る舞い。
これを回避し、選択した 2 つのコードを結合する方法。
その場合は、これらの要素に対して同じハンドラーと異なるイベントを使用しないのはなぜですか。
$("#button_a").on("click", function(){
myFunc(this);
});
$("button_b").on("dblclick", function(){
myFunc(this);
});
function myFunc(elem){
// Your code here
}
セレクターの組み合わせ ( @mike で言及) は、セレクターの値をカンマで区切るだけです$("#button_a,#button_b")
。イベントはスペースで区切ることができます -
var selector = '#bar';
$("#foo,"+selector).on("click dblclick", handler);
これら 2 つのイベントを同じ要素でキャッチするのは困難です。ダブルクリックの最初のクリックが取得され、ハンドラーが呼び出されます。シングルクリックでハンドラーが呼び出される前に、ダブルクリックをスクイーズすることはできません。
ここでの私のライブ デモでは、同じ手法を使用していますがmouseenter
、click
イベントを使用しています。