Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как можно отловить id который добавил с помощью append() ? (https://javascript.ru/forum/dom-window/24851-kak-mozhno-otlovit-id-kotoryjj-dobavil-s-pomoshhyu-append.html)

saturn 16.01.2012 19:30

Как можно отловить id который добавил с помощью append() ?
 
Добрый вечер всем. Подскажите как можно отловить id который добавил с помощью append() ?
Вот к примеру есть такой код

$('#add_vote').click( function () {
        $('#div_vote').append('<div><input type="text"/><img src="rem.png" id="rem_vote"/></div>');
    });

А как можно отловить клик на id="rem_vote" ?

Nekromancer 16.01.2012 19:44

С помощью append вы добавляете элемент, это не одно и то же что добавить айди.
Отловить клик это тоже не одно и то же, что отловить айди.
Как вариант всегда добавлять этим картинками какой то одинаковый класс и сделать так:
$('.my-class').live('click', function(){
alert(this.id)
});

saturn 16.01.2012 19:53

Nekromancer
Спасибо.
Уже правда сам догадался что к чему.
Кстати вместо live() лучше on()
Вот что в результате вышло
$('#add_vote').click( function () {
                $('#div_vote').append('<div><input type="text"/><img src="rem.png" id="rem_vote"/></div>');
                
       $('#div_vote').on( "click","#rem_vote", function() {
       $(this).parent().remove();
 
    });            
                
    });

Добавляет и удаляет текстовое поле.

Nekromancer 16.01.2012 21:02

saturn,
ну оно то лучше и вы это наверно прочли в документации jQuery. Но можно заметить, что не все используют версию 1.7+, да и не факт, что ту, в которой хотя бы delegate есть. В общем проще написать live - кто пользуется новой, тот поймёт, что лучше использовать on. А кто не знает - ни разу не пострадает, ведь это одно и то же, в принципе.

И on кстати надо вешать ну по клику, а заранее, например так:
$('#div_vote').on( "click","#rem_vote", function() {
       $(this).parent().remove();
 
    });   
$('#add_vote').click( function () {
                $('#div_vote').append('<div><input type="text"/><img src="rem.png" id="rem_vote"/></div>');         
                
    });

saturn 17.01.2012 01:35

Nekromancer , не знал что on() нужно объявлять заранее., хм, ... буду знать).


Часовой пояс GMT +3, время: 10:38.