Pobranie id od dynamicznie stworzonego elementu.

Odpowiedz Nowy wątek
2018-12-02 20:25
0

Chce pobrać id z dynamicznie stworzonego elementu. Uzywam do tego kodu JQuery:
$(function () {
$('.element').click(function () {
var item = $(this).attr('id');
console.log(item);

});

});
Niestety kod działa tylko dla elementów stworzonych w html i potrafi pobrać id elementu. Gdy tworze element w JS powyższy kod już nie działa. Jak inaczej pobrać ten atrybut?

Pozostało 580 znaków

2018-12-02 20:51
0

spróbuj: this.id (bez jQuery).


((0b10*0b11*(0b10**0b101-0b10)**0b10+0b110)**0b10+(100-1)**0b10+0x10-1).toString(0b10**0b101+0b100);
edytowany 1x, ostatnio: LukeJL, 2018-12-02 20:51

Pozostało 580 znaków

2018-12-02 21:14
0

Niestety, dalej nie wiem jak to zrobic;/

Pozostało 580 znaków

2018-12-02 21:19
0

Zrób tak:

$('.element').on('click', function () {
//Tu Twój kod
});

Pozostało 580 znaków

2018-12-02 21:57
1

W przypadku dynamicznie tworzonych elementów - handler, który został założony przed ich utworzeniem, nie będzie w stanie wykryć kliknięcia.
Dla przykładu:
https://jsfiddle.net/Lsyrftvm/
Button1, który jest statycznie w HTMLu, zostanie złapany przez handler i alert zostanie wyświetlony. Natomiast kliknięcie w Button2 nie zostanie wykryte, ponieważ element docelowy jest tworzony po 50 milisekundach czyli dopiero po wykonaniu $('button').on('click', ...)

Aby temu zaradzić musisz założyć event listener na najbliższego statycznego rodzica, co do którego masz pewność, że zawsze będzie w drzewie DOM.
Dla przykładu:
https://jsfiddle.net/8vjcnb0p/
Tutaj utworzyłem handler na '#container', który zawsze istnieje w drzewie DOM i w którym znajdują się wszystkie buttony. Następnie w metodzie .on(), zgodnie z dokumentacją, trzeba dodać parametr wskazujący elementy, na które chcemy założyć event listener:

.on('click', 'button', function () {})

http://api.jquery.com/on/

edytowany 4x, ostatnio: orkin, 2018-12-02 22:02

Pozostało 580 znaków

2018-12-02 22:19
0
zduninho88 napisał(a):

Niestety, dalej nie wiem jak to zrobic;/

Kmiń trochę.

Masz:

var item = $(this).attr('id');

to spróbuj tak:

var item = this.id;

W ten sposób zamiast ciągnąć atrybut id dostajesz się do właściwości id. I to powinno działać, przynajmniej jeśli chodzi o samo pobieranie id (podpinanie zdarzeń to już inna bajka).

Edit: chociaż sprawdziłem na jsfiddle i w elementach pojawia się atrybut id nawet jeśli tworzysz je dynamicznie http://jsfiddle.net/fx4s9eto/

Chociaż pewnie przedmówca ma rację z tymi zdarzeniami, ja się skupiłem bardziej na tytule wątku, ale możliwe, że pytanie zostało źle zadane.


((0b10*0b11*(0b10**0b101-0b10)**0b10+0b110)**0b10+(100-1)**0b10+0x10-1).toString(0b10**0b101+0b100);
edytowany 2x, ostatnio: LukeJL, 2018-12-02 22:28

Pozostało 580 znaków

2018-12-02 23:28
1

Połączyłem dwie ostatnie odpowiedzi i działa!
$('#lista').on('click', 'div', function(){
console.log(this.id);
})
Dzięki temu klikając w każdy nowo tworzony element mogę pobrać jego id.
Muszę to pokmińic bo raczej dalej się bez takich rzeczy nie obejdzie.
Dziękuję serdecznie!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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