我正在使用我的插件创建各种对象,然后将更多对象附加到它们,因此当我这样做时,我需要选择那些新对象。
我在这里做了非常简单的jsfiddle:http: //jsfiddle.net/6zBGj/2/
现在你可以看到我将item
div 附加到了$container
,所以当用户点击item
我想做某事时,我找不到选择它的方法。
请记住,这是一个插件,我不想像这样选择它:$(".container .item")
我需要分别处理每个单独的对象。
PS不介意凌乱的代码,这只是一个例子。
我正在使用我的插件创建各种对象,然后将更多对象附加到它们,因此当我这样做时,我需要选择那些新对象。
我在这里做了非常简单的jsfiddle:http: //jsfiddle.net/6zBGj/2/
现在你可以看到我将item
div 附加到了$container
,所以当用户点击item
我想做某事时,我找不到选择它的方法。
请记住,这是一个插件,我不想像这样选择它:$(".container .item")
我需要分别处理每个单独的对象。
PS不介意凌乱的代码,这只是一个例子。
如果您首先在内存中创建元素,请在其中附加事件处理程序,然后您可以将该变量附加到父级。像这样:
var $item = $("<div class='item'></div>").click(function() {
alert("Foo");
});
$container.append($item);
div 尚不存在,因此您无法将侦听器附加到它们。您可以做的是将侦听容器内所有 div 的事件委托给容器本身:
$container.on("click", "div", function(){
$(".event").append("clicked! <br />");
});
这是一个演示:http: //jsfiddle.net/6zBGj/4/
如果您知道将添加到容器中的内容,那么您可以这样做 - 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()