选择在插件中创建的对象

时间:2012-11-23 12:15:51

标签: jquery

我正在用我的插件创建各种对象,然后我向它们添加更多对象,所以当我这样做时,我需要选择那些新鲜的对象。

我在这里制作了非常简单的jsfiddle:http://jsfiddle.net/6zBGj/2/

现在您可以看到我将item div附加到$container,因此当用户点击item我想要做某事时,我找不到办法选择它。

请记住,这是一个插件,我不想这样选择它:$(".container .item")我需要单独处理每个单独的对象。

P.S不介意凌乱的代码,这只是一个例子。

3 个答案:

答案 0 :(得分:1)

如果先在内存中创建元素,请在其中附加事件处理程序,然后将该变量附加到父元素。像这样:

var $item = $("<div class='item'></div>").click(function() {
    alert("Foo");
});
$container.append($item);

Example fiddle

答案 1 :(得分:1)

div尚不存在,因此您无法将侦听器附加到它们。您可以做的是将侦听容器内所有div的事件委托给容器本身:

$container.on("click", "div", function(){
   $(".event").append("clicked! <br />");
});

以下是演示:http://jsfiddle.net/6zBGj/4/

答案 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()