Jak uzyskać listę zdarzeń, w postaci tam funkcji, węzła w JS

0

Jak uzyskać listę zdarzeń, w postaci tam funkcji, węzła w JS.
Zdarzenia wstawiamy za pomocą, np.: $(elem).on(zdarzenie_1,funkcja_1), $(elem).on(zdarzenie_2,funkcja_2),..., to jak uzyskać te funkcje, tzn. funkcja_1, funkcja_2,...., tzn.: tabelę tych funkcji, wraz z nazwami zdarzeń zdarzenie_1, zdarzenie_2,.....

0

Czyli co dokładnie chcesz zrobić? Tytuł dosyć enigmatyczny.

0
Riddle napisał(a):

Czyli co dokładnie chcesz zrobić? Tytuł dosyć enigmatyczny.

Już opisałem powyżej, w postaci poprawek postu, którego nie zauważyłeś, tzn.:
Zdarzenia wstawiamy za pomocą, np.: $(elem).on(zdarzenie_1,funkcja_1), $(elem).on(zdarzenie_2,funkcja_2),..., to jak uzyskać te funkcje, tzn. funkcja_1, funkcja_2,...., tzn.: tabelę tych funkcji, wraz z nazwami zdarzeń zdarzenie_1, zdarzenie_2,....., czyli jak uzyskać listę zdarzeń, w postaci tam funkcji, węzła w JS.

0
TomRZ napisał(a):

Tutaj masz odpowiedź:

https://stackoverflow.com/questions/2518421/jquery-find-events-handlers-registered-with-an-object

Kod: console.log(jQuery._data( jQuery("body")[0],"events")) zwraca undefined, a kod: console.log(jQuery._data( jQuery("body")[0])), zwraca obiekt Object, tam widzę element events, jak się do niego odwołać, bo kod:
console.log(jQuery._data( jQuery("body")[0]).events) też zwraca undefined.

0

Myślę, że jest to problem XY https://xyproblem.info/
i że coś robisz, ale nie wiadomo, po co ci potrzebne. Można tylko zgadywać:

  • czy chcesz również wywoływać ręcznie zdarzenia? Wtedy w jQuery masz funkcję trigger. https://api.jquery.com/trigger/
  • tym niemniej drążąc dalej, to może w ogóle nie potrzebujesz wywoływać ręcznie zdarzeń, tylko chcesz po prostu móc odpalać kawałki kodu po kilka razy. Wtedy przecież możesz zrobić wydzielić to do jakichś funkcji:
    function loadData() {
     //....
    }
    $(elem).on('click', loadData);
    
    ale i wtedy możesz bezpośrednio to uruchomić:
    loadData();
    
  • a może faktycznie chcesz uzyskać listę zdarzeń. Pytanie: po co? Rozsądny use case byłby do debugowania, a @TomRZ napisał już rozwiązanie wyżej. Chociaż jak rozumiem ten wątek zakłada użycie jQuery, zastanawiam się, czy bez jQuery dałoby się to uzyskać. Krótkie googlanie pokazuje, że jest coś takiego jak funkcja getEventListeners. która działa jednak tylko w konsoli przeglądarki (sprawdzałem na Chrome): https://developer.chrome.com/blog/get-and-debug-event-listeners/

No ale w dalszym ciągu - ten wątek tak mętnie opisuje rzeczywisty cel, że mogę tylko zgadywać.

0
LukeJL napisał(a):

Myślę, że jest to problem XY https://xyproblem.info/
i że coś robisz, ale nie wiadomo, po co ci potrzebne. Można tylko zgadywać:

  • czy chcesz również wywoływać ręcznie zdarzenia? Wtedy w jQuery masz funkcję trigger. https://api.jquery.com/trigger/
  • tym niemniej drążąc dalej, to może w ogóle nie potrzebujesz wywoływać ręcznie zdarzeń, tylko chcesz po prostu móc odpalać kawałki kodu po kilka razy. Wtedy przecież możesz zrobić wydzielić to do jakichś funkcji:
    function loadData() {
     //....
    }
    $(elem).on('click', loadData);
    
    ale i wtedy możesz bezpośrednio to uruchomić:
    loadData();
    
  • a może faktycznie chcesz uzyskać listę zdarzeń. Pytanie: po co? Rozsądny use case byłby do debugowania, a @TomRZ napisał już rozwiązanie wyżej. Chociaż jak rozumiem ten wątek zakłada użycie jQuery, zastanawiam się, czy bez jQuery dałoby się to uzyskać. Krótkie googlanie pokazuje, że jest coś takiego jak funkcja getEventListeners. która działa jednak tylko w konsoli przeglądarki (sprawdzałem na Chrome): https://developer.chrome.com/blog/get-and-debug-event-listeners/

No ale w dalszym ciągu - ten wątek tak mętnie opisuje rzeczywisty cel, że mogę tylko zgadywać.

Kod:
js var c=jQuery._data( jQuery("body")[0]).events.scroll;
wywołuje , że events nie jest zdefiniowany, a:
js var c=jQuery._data( jQuery("body")[0]);
zwraca zmienną typu Objekt, w której na konsoli widzę events jako jeden z elementów. Co nie tak robię.

1 użytkowników online, w tym zalogowanych: 0, gości: 1