0

私が持っているとしましょう:

(イベント X が要素 A で発生した場合) コード R を実行する

if (イベント Y が要素 B で発生) コード R を実行

jQuery では、2 つの if ステートメントの代わりに、1 つの if ステートメントを使用するにはどうすればよいですか?

if (イベント X が要素 A で発生) OR (イベント Y が要素 B で発生) コード R を実行

bind メソッドを調べてきましたが、これに対する解決策を見つけることができませんでした。Google の検索機能のようなものです。[検索] ボタンをクリックすると、検索が実行されます。ただし、入力ボックスに何かを入力して「Enter」キーを押すと、検索も実行されます。繰り返しますが、2 つの異なる要素 (ボタンと入力ボックス)、2 つの異なるイベント (マウスのクリックとキーの押下) ですが、同じ機能 (検索) ですか?

4

3 に答える 3

3

if最終的なコードにはステートメントはありません。各イベントのイベント ハンドラーを各要素にバインドする必要があり、イベント ハンドラーはもちろん同じ関数にすることができます。

function event_handler() {
    // ...
}

$(elementA).on('eventX', event_handler);
$(elementB).on('eventY', event_handler);

jQuery チュートリアルを読むことをお勧めします: http://docs.jquery.com/Tutorials

一般的なイベント処理の詳細については、次の記事をご覧ください: http://www.quirksmode.org/js/introevents.html

于 2013-01-03T14:25:48.563 に答える
0

イベント/要素の両方の組み合わせに同じ関数を追加する必要があります。

$('#elementA').on('click', myEventHandler);
// You can specify multiple Events:
$('#elementB').on('mousedown mouseup blur', myEventHandler);
// Or specify multiple elements:
$('#elementB, #elementC').on('click', myEventHandler);

function myEventHandler(e){
    console.log(e.type); // Event type ('mousedown', 'mouseup' etc)
    console.log(this);  // The element that triggered the event.
    // Do stuff.
}

ただし、 1 行でバインドclickすることはできません。'#elementA' mousedown'#elementB'

したがって、いいえ、複数の異なるイベントを異なる要素にバインドする「ワンライナー」jQuery関数はありません。

基本的に、jQueryのを見てください.on()

于 2013-01-03T14:26:24.833 に答える
0

複数の jQuery セレクターをカンマで区切って使用できます (CSS セレクターなど)。結果の jQuery オブジェクト リストには、それらすべてが含まれます。

.bind()またはを使用.on()し、最初のパラメーターをスペースで区切られたイベント名のリストに設定すると、jQuery で複数のイベントをバインドできます。

function handler_function (e) {
    e.target // contains the element that triggered the event (which was clicked for ex.)
    e.type // contains the event type that triggered the event
    e.keyCode // contains a number representing the key that has been pressed (if any)
}
$('button#button_id, input[type=text]#input_box')
    .bind('keyup click hover touch drag drop', handler_function);
于 2013-01-03T14:29:09.070 に答える