JQuery委托并在函数中使用了几个选项

时间:2010-05-06 18:55:19

标签: javascript jquery delegates parent

我无法弄清楚如何使用JQuery委托函数来执行我需要的操作。基本上,我需要允许用户通过选择按钮动态地将面板(即div)添加到表单。然后,当用户单击给定Panel中的按钮时,我希望能够访问该Panel的某些内容(例如更改此示例中的颜色)。不幸的是,似乎对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 个答案:

答案 0 :(得分:1)

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();
});

我会选择这样做。 ("closest" documentation