konto usunięte

Temat: Elementy z przypisanym zdarzeniem on('click') - jak?

Cześć!

Jak mogę wykryć, który element HTML (w moim przypadku chodzi o ikonki) ma oddelegowane zdarzenie .click(). Przykładowo click() jest podpinany tak:

$(document).on('click','img', function(){...});

Chcę namierzyć elementy, które się w to łapią, oczywiście nie są to wszystkie , to tylko uproszczenie. Nie wchodzi w opcję modyfikowanie kodu delegującego, ponieważ system jest duży, delegacji jest sporo. Docelowo do elementu ze zdarzeniem click() chcę podpiąć klasę css.

konto usunięte

Temat: Elementy z przypisanym zdarzeniem on('click') - jak?

Najprościej w ciele funkcji odwołać się do obiektu this:


$(document).on('click','img', function(){
var $this = $(this);
});


Oprócz tego, handler funkcji .on ma jako parametr obiekt Event, w którym możesz dostać się do kilku interesujących rzeczy, np. event.target:

http://api.jquery.com/on/
http://api.jquery.com/category/events/event-object/

PS. To pytanie chyba bardziej pasuje do jQuery niż JavaScriptTen post został edytowany przez Autora dnia 12.08.14 o godzinie 12:11

konto usunięte

Temat: Elementy z przypisanym zdarzeniem on('click') - jak?

W systemie jest około 400 wywołań .on() i nie ma możliwości każdego takiego wywołania przerabiać. Chodzi o coś w stylu: jeśli element html (np. img) ma np. po staremu ustawiony atrybut onclick="", to poprzez selektor $('img[onclick]').addClass() wszystkim takim elementom dodaję jakieś stylowanie i to samo chce zrobić dla wszystkich elementów, które mają oddelegowane zdarzenie.

Sprawdzę Twój koncept, żeby dostać się przez obiekt event i wydobyć target, ale to bym musiała zrobić dla każdego użycia .on() >>> równie dobrze mogę w każdym ręcznie dodawać klasę poprzez $(this).

PS. tam też wrzuciłam ;-)Ten post został edytowany przez Autora dnia 12.08.14 o godzinie 13:50

konto usunięte

Temat: Elementy z przypisanym zdarzeniem on('click') - jak?

Jeśli w projekcie jest wykorzystywane jQuery, możesz to sprawdzić wykorzystując metodę "data". Nie wiem tylko jak z wydajnością podczas sprawdzania tak naprawdę całej powłoki DOM, ale możesz to równie dobrze ograniczyć do obiektu / elementu, w obrębie którego chcesz wykonać poszukiwania handlerów.

Dla pojedynczego elementu wygląda to mniej więcej tak:
var element_events = $.data(element, 'events');
if(element_events && element_events.click) {
...
}


Jeśli nie potrzebujesz całego obiektu z eventami, możesz bezpośrednio odwołać się do wartośći:
var elementy_z_clickiem = $.data( $('twój_selector'), 'events' ).click;
$.each( elementy_z_clickiem, function(i,o) {
...
});

konto usunięte

Temat: Elementy z przypisanym zdarzeniem on('click') - jak?

Sprawdzę, dzięki :)

Następna dyskusja:

jak zapobiec przeskakiwaniu...




Wyślij zaproszenie do