我正在用我的插件创建各种对象,然后我向它们添加更多对象,所以当我这样做时,我需要选择那些新鲜的对象。
我在这里制作了非常简单的jsfiddle:http://jsfiddle.net/6zBGj/2/
现在您可以看到我将item
div附加到$container
,因此当用户点击item
我想要做某事时,我找不到办法选择它。
请记住,这是一个插件,我不想这样选择它:$(".container .item")
我需要单独处理每个单独的对象。
P.S不介意凌乱的代码,这只是一个例子。
答案 0 :(得分:1)
如果先在内存中创建元素,请在其中附加事件处理程序,然后将该变量附加到父元素。像这样:
var $item = $("<div class='item'></div>").click(function() {
alert("Foo");
});
$container.append($item);
答案 1 :(得分:1)
div尚不存在,因此您无法将侦听器附加到它们。您可以做的是将侦听容器内所有div的事件委托给容器本身:
$container.on("click", "div", function(){
$(".event").append("clicked! <br />");
});
答案 2 :(得分:1)
如果您知道将添加到容器中的内容,那么您可以执行此操作 - http://jsfiddle.net/aYgvm/
我所做的就是改变:
$("div", $container).live("click", function(){
$(".event").append("clicked! <br />");
});
为:
$($container).on('click','div', function(){
$(".event").append("clicked! <br />");
});
您还应该避免使用live()
- Jquery live() vs delegate()