append() в click()

Discussion in 'PHP' started by Doom123, 22 Aug 2011.

  1. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    Привет!

    Появился такой вопрос ... почему когда я вызываю append() и создаю им Div element

    HTML:
    $("#cart").append('<div class="cproduct"><div class="pdel">X</div></div>');
    И вызов append приходит из ивента click()

    HTML:
    $("div.product").click(
    
    function() {
        $("#cart").append('<div class="cproduct"><div class="pdel">X</div></div>');
    });
    То ивент click на созданый элемент не сабатывает вне первом ивенте .. а в нём да ..

    НЕ РАБОТАЕТ

    HTML:
    $("div.product").click(
    
    function() {
        $("#cart").append('<div class="cproduct"><div class="pdel">X</div></div>');
    });
    
    $("div.pdel").click(function(){alert("da");});
    
    
    РАБОТАЕТ

    HTML:
    $("div.product").click(
    
    function() {
    
        $("#cart").append('<div class="cproduct"><div class="pdel">X</div></div>');
    
    $("div.pdel").click(function(){alert("da");});
    
    });
    
    
    
    
    Почему так?
     
  2. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    в первом случае ты привязываешь событие к несуществующему объекту, а во втором к существующему - поэтому и работает
     
  3. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    дык я его создаю с помощью клика на <div class="product"></div> тоесть обьект создаётся ..
     
  4. Maksim_K

    Maksim_K New Member

    Joined:
    7 Aug 2011
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    После клика необходимо обновить DOM элементы к которым должны быть привязаны любые евенты так, как JS уже выполнил все функции которые у вас описаны и при добавки любого DOM элемента ему надо об этом сообщить. В вашем случая все так как написал phpdreamer, и необходимо просто создать доп функцию которая будет заново запускать привязку к .pdel или пользоваться тем что у вас работает.