jQuery verhindern, dass alle Ereignis-bubbling

Ich bin mit jQuery ist es widget-factory und verwenden von benutzerdefinierten Ereignissen für die Behandlung von Ereignissen in meiner Anwendung.

Dies bedeutet, dass alle meine Veranstaltung verbindlich sieht viel wie:

//...in the widget factory code

$(this.element).addClass('customEventClass');
$(this.element).bind('mysite.loadNextPage', $.proxy(this, 'loadNextPage');

und die Ereignisse ausgelöst werden durch tun:

$('.customEventClass').trigger('mysite.loadNextPage');

Weil die Veranstaltungen werden direkt an die Elemente, die Notwendigkeit, Sie zu erhalten, brauche ich nicht, Sie haben diese benutzerdefinierte Ereignisse Blase oben durch den DOM. Ich weiß, ich kann überprüfen, ob das auch hat gequasselt, oder nicht dadurch in die event-handler-code:

if (event.target != event.currentTarget) {
    event.stopPropagation();
    event.preventDefault();
    return;
}

Aber in dem moment, da die meisten Elemente, die zu hören sind, die für die benutzerdefinierte Ereignisse müssen nicht ein handler registriert für 'mysite.loadNextPage' gibt es 51 Ereignisse, die generiert werden, wo nur 1 eigentlich gar nichts. Gibt es eine Möglichkeit entweder:

  1. sagen, jQuery, nicht zu Blasen-diese Ereignisse überhaupt nicht oder
  2. Fügen Sie eine Standard-stop-propagation' - handler, um alle DOM-Objekte, die der Klasse 'customEventClass" zu stoppen, Sie sprudelt bis ein Ereignis, dass Sie nicht eine bestimmte handler für.

Oder gibt es andere gute Verfahren für die nur auslösende Ereignisse für Elemente interessant, die in diesen Ereignissen, anstatt viele Ereignisse ausgelöst werden, für Elemente, die nicht daran interessiert sind, diese Ereignisse.

InformationsquelleAutor Danack | 2013-01-30
Schreibe einen Kommentar