2010-02-09 12 views
33

Skąd mam wiedzieć w moim kodzie aktywującym, który został wywołany preventDefault?jQuery: Jak korzystać z event.preventDefault() z niestandardowymi zdarzeniami?

$(document).trigger('customEvent', params); 
if (/* ??? */) 
    doDefaultActions(); 
+1

jeśli jest to wydarzenie zwyczaj tam .. nie powinno być domyślną akcją .. –

+1

Jest to nadal coś, co można wykorzystać w mechanizmie zdarzeń, jeśli przewodnik jest również używany do niestandardowych zdarzeń. –

+0

Jeśli wydarzenie niestandardowe jest naprawdę niestandardowe, to co próbujesz zapobiec? Normalnie funkcja preventDefault jest używana, aby przeglądarka nie wykonywała normalnych czynności. Sama przeglądarka nie zna ani nie dba o niestandardowe zdarzenia. –

Odpowiedz

45

spust() może również podjąć obiekt zdarzenia, więc jeśli można utworzyć obiekt zdarzenia, tak jak poniżej:

var event = jQuery.Event("customEvent"); 
$(document).trigger(event); 

następnie można sprawdzić po spust, aby zobaczyć if preventDefault() został wywołany w następujący sposób:

var prevented = event.isDefaultPrevented(); 
+0

Wow, to fajne. Dowiedz się czegoś każdego dnia! – Pointy

+3

Tak, dzisiaj nauczyłem się tego, sprawdzając na jQuery API. Wszyscy się uczymy dzisiaj! –

+0

To nie wygląda na udokumentowane (przynajmniej na stronie api.jquery.com) - cóż, i tak nie mogę tego znaleźć. Dokumenty są teraz trochę lepsze, ale nadal żałuję, że nie zrobią tego jako wiki. [edytuj: ok Widzę to teraz w źródle !!] – Pointy

0

Do mojej wiedzy „preventDefault()” rozmowa jest o zapobieganiu rodzimych odpowiedzi przeglądarki, aby takie rzeczy jak kliknięć na znaczniki kotwicznych lub znakom w polach tekstowych. Po zakończeniu cyklu obsługi zdarzeń to koniec. W przypadku przygotowanych zdarzeń nie wydaje mi się, żeby miało to jakikolwiek wpływ, ponieważ chodzi o system przetwarzania zdarzeń jQuery, a nie o natywną funkcjonalność przeglądarki.

Twój kod może ustawić gdzieś flagę, aby komunikować się ze "światem zewnętrznym".

[edytuj] ooh możesz spróbować, by przewodnik obsługiwał odwołanie do obiektu zdarzenia w miejscu, w którym kod zewnętrzny może go znaleźć, a następnie sprawdzać zewnętrznie za pomocą "isDefaultPrevented()". Nie wiem, czy to zadziała.

1

Zdarzenia niestandardowe nie mają pewnych domyślnych działań, które się zdarzają .. (są niestandardowe).

Z drugiej strony, jeśli chcesz, aby zatrzymać efekt propagacji tego wydarzenia dla innych następnie spojrzeć na triggerHandler który nie pęcherzyki do hierarchii ..

Powiązane problemy