2013-03-26 10 views
6

Biorąc pod uwagę to:Dlaczego parametr event.namespace jest niezdefiniowany dla zdarzenia kliknięcia?

HTML

<button id="btn">Click me</button> 
<br/> 
<div id="result"></div> 

JS

$("#btn").on("click.mynamespace", function (e) { 
    $("#result").text("namespace: " + e.namespace); 
}); 

Dlaczego zawsze jest niezdefiniowana nazw?

EDIT:

Co chcę móc wykonać jest podłączenie wielu instancji programu obsługi zdarzeń kliknąć wydarzenie przycisku. Następnie, po kliknięciu przycisku, wywoływane jest kolejno każde wystąpienie. Każda instancja programu obsługi zdarzeń musi się wtedy rozłączyć, aby po ponownym kliknięciu przycisku instancja programu obsługi nie została wywołana.

+0

Prawdziwe pytanie brzmi: dlaczego wywoływacz zdarzeń jest wywoływany, jeśli przestrzeń nazw nie jest zgodna z mynamespace? –

Odpowiedz

8

Właściwość namespace jest określona tylko wtedy, gdy zdarzenie zostało wywołane przy użyciu metod jQuery: .trigger lub .triggerHandler. W przeciwnym razie, w jaki sposób jQuery wie, której przestrzeni nazw użyć, jeśli istnieje wiele?

http://jsfiddle.net/GYyef/2/

http://api.jquery.com/event.namespace/

Jeśli twoim celem jest, aby mieć zdarzenie zdarzyć się tylko raz, metoda .one() byłoby bardziej odpowiednie.

+0

oh, miałem nadzieję, że wszystkie procedury obsługi będą wywoływane przez zdarzenie click, aw każdej procedurze obsługi będę mógł pobrać przestrzeń nazw w celu rozłączenia obsługi zdarzenia. – slippyr4

+1

@ slippyr4 dane o wydarzeniach wymienione przez karim79 byłyby sposobem na zrobienie tego, jednak jeśli chcesz, aby wydarzenie miało miejsce tylko raz, metoda ".one" byłaby bardziej odpowiednia. –

+0

post, że jako odpowiedź, to dokładnie to, co chciałem! – slippyr4

Powiązane problemy