2

私は次のことに興味があります...

jQueryを使用すると、カスタムイベント(例myevent)を定義してトリガーできます。名前空間を追加することで、粒度のレイヤーを追加することもできます(例myevent.namesp)。

名前空間に関係なく、同じ名前のすべてのカスタムイベントのイベントハンドラーを作成できるかどうかを知りたいです。

たとえば、次のコードがある場合:

$('input').on('myevent.namesp', function(e) {
    alert('The immediate event fired');
});

$('body').on('myevent', function() {
    alert('Caught the delegated event');
});

$('input').click(function() {
    $(this).trigger('myevent.namesp');
});

'immediate event'は発生しますが、委任されたイベントハンドラーは発生しません(特定の名前空間を使用してバインドされていないため)。のようなことをすることは可能ですか

$('body').on('myevent.*', function() { /* Handler for all 'myevent' events */ });

このように使用.on()することは不可能ですが、あなたはその考えを理解しています。

ここで例を見ることができます:http://jsfiddle.net/VwU68/

4

1 に答える 1

1

名前空間イベントにより、イベントがより具体的になります。イベント トリガーに名前空間がない場合、名前空間に関係なく、そのタイプのすべてのイベントがトリガーされます。したがって、代わり.triggerに使用するを変更する必要があります。'myevent'

ただし、複数の名前空間を持ち、最高レベルの名前空間をトリガーすることはできます (どうやら; 私もこれを知りませんでした): http://jsfiddle.net/VwU68/2/ -- それを有利に利用できるかもしれません。 .

于 2012-12-10T17:47:08.233 に答える