3

最適化が必要ないくつかの異なるタスクがあります。

$('.container').on('click', '.one', function () {
  // do task one
});

$('.container').on('click', '.two', function () {
  // do task two
});

$('.container').on('click', '.three', function () {
  // do task three
});

以下にマージされます。

$('.container').on('click', '.one, .two, .three', function () {
  // How to selectively perform each task, based on the trigger/ selector?
  // Think of if (event.type === 'mouseenter') // do sumthing
});

問題は、各トリガー/セレクターに基づいて、さまざまなタスクを選択的に実行する方法です。または、これを実行するためのより良い方法はありますか?

ありがとう

4

3 に答える 3

8

より良いアプローチは、.on()呼び出しをチェーンすることです。

$('.container').on('click', '.one', function () {
    // do task one
}).on('click', '.two', function () {
    // do task two
}).on('click', '.three', function () {
    // do task three
});

このようにすると、イベント ハンドラーがトリガーされるたびに要素に特定のクラスがあるかどうかを確認するために必要な余分な処理が不要になります。

于 2012-11-22T14:22:36.513 に答える
6
$('.container').on('click', '.one, .two, .three', function () {
  if ($(this).hasClass("one")) {
    // do task one
  }
  if ($(this).hasClass("two")) {
    // do task two
  }
  if ($(this).hasClass("three")) {
    // do task three
  }
});
于 2012-11-22T14:21:51.220 に答える
3

メソッドを使用できますhasClass

$('.container').on('click', '.one, .two, .three', function () {
  var $this = $(this);
  if ($this.hasClass('one')) {
     // 
  } else if ($this.hasClass('two')) {
     //
  } else {
    //
  }
});
于 2012-11-22T14:22:05.173 に答える