我无法弄清楚如何使用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>
答案 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 )