-1

する代わりに

$("#IsOutdoors").click(function () {
    SendData();
});

$("#HasPatio").click(function () {
    SendData();
});

複数の .click evnt を実行したい場合、より良い方法はありますか? ありがとう!

4

4 に答える 4

3

すべてのセレクターを 1 つの文字列で使用し、コンマで区切ります。

$("#IsOutdoors, #HasPatio").click(function () {
    SendData();
});

SendDataより簡潔なバージョンについては、関数自体をclick次のように渡すことができます。

$("#IsOutdoors, #HasPatio").click( SendData );

ただし、これによりthis内の値が変更されることに注意してSendDataください。

于 2013-01-19T23:45:16.587 に答える
2
$("#IsOutdoors,#HasPatio").click(SendData);
于 2013-01-19T23:45:25.703 に答える
1

かなりの数の方法があります:

  • セレクターを組み合わせる
    CSSで行うのと同じように、コンマを使用して複数のセレクターをターゲットにします。
    $("#IsOutdoors, #HasPatio").click(SendData);
  • jQueryコレクションに追加する
    を使用して、既存のjQueryコレクションに要素を追加できます$.add()getElementById()個々の選択は、フルまたはシズルの代わりに内部的にショートカットを使用するquerySelectorAll()ため、これがより効率的である可能性があります。
    $("#IsOutdoors").add("#HasPatio").click(SendData);
  • 要素に共通のクラスを追加する
    これは実際にはスクリプトソリューションではありませんが、要素が論理的に類似している場合は、クラスが適切な場合があります。
    $(".someClass").click(SendData);
于 2013-01-19T23:51:51.333 に答える
1

それはあなたがより良いとはどういう意味かによります。コードを減らしても同じ結果が必要ですか?あなたは次のようなことをすることができます

$("#IsOutdoors, #HasPatio").click(SendData);

クリックハンドラーの数を減らしたい場合、たとえば、すべて同じクリックハンドラーを持つ複数のDOM要素がある場合は、代わりにイベントハンドラーを親要素に配置できます。次に、このイベントを委任する必要のある要素のすべてのIDを一覧表示するか、のようなすべての共通クラスをそれらに与えることができますclickable。HTMLが次のようになっているとしましょう。

<div id='someParent'>
  <div id='IsOutdoors' class='clickable'></div>
  <div id='HasPatio' class='clickable'></div>
</div>

クリックハンドラーを次のように簡略化できます

$("#someParent").on('click', '.clickable", SendData);

または、私が提案したようなクラスを追加したくない場合

$("#someParent").on('click', '#IsOutdoors #HasPatio", SendData);
于 2013-01-19T23:52:13.623 に答える