JQuery Delegate и использование туристических опций в функции - PullRequest
0 голосов
/ 06 мая 2010

У меня проблемы с выяснением того, как использовать функцию делегата JQuery для выполнения того, что мне нужно. По сути, мне нужно разрешить пользователям динамически добавлять панели (то есть элементы div) в форму, выбирая кнопку. Затем, когда пользователь нажимает кнопку внутри данной панели, я хочу иметь возможность что-то добавить к этой панели (например, изменить цвет в этом примере). К сожалению, похоже, что ссылки на функции обхода JQuery в этом случае не работают. Кто-нибудь может объяснить, как добиться этого эффекта? Есть ли в любом случае привязать разных делегатов к каждой панели по мере ее добавления.

$('.addPanels').delegate('*', 'click', function() {  
    $(this).parent.css('background-color', 'black');  
    $('.placeholder').append('<div class="panel"><a href="#" class="addLink">Add item</a></div>');  
 });  

<div class="addPanels">  
    <div class="panel">   
        <a href="#" class="addLink">Add item</a> text</div>  
       <div class="placeholder"/>  
    </div>  
</div>  

1 Ответ

1 голос
/ 06 мая 2010

parent - это метод, а не свойство; поэтому он должен быть вызван (parent())

Первым параметром для метода delegate является селектор; таким образом, вы захватываете событие щелчка на любом элементе в .addPanels.

$('.addPanels').delegate('.addLink', 'click', function(event) {
    var panel = $(this).closest('div.panel');

    panel.css('background-color', 'black');
    panel.find('.placeholder:first').append('Add item');

    event.preventDefault();
});

Было бы так, как я бы выбрал это. ( «ближайшая» документация )

...