如何将事件绑定到动态创建的JQuery DOM元素

时间:2011-03-04 15:25:29

标签: javascript jquery jquery-plugins

我无法在我试图制作的插件中引用一个对象。

该插件与div容器相关联。

当dom准备就绪时,它会以启动默认值加载 - 创建自己的div,其中包含它知道的id和无序列表。我可以使用$this.append(..)添加列表项并使其正常工作。但是我想添加一个功能,单击某个列表项会执行某些操作..现在警报就足够了。

通常我可以这样做:

$("#myId").click(function(){...

我如何将这些功能添加到插件中?

我想要插件本身设置的动作,所以点击插件创建的列表项已经附加到我写入jquery插件的一些功能。

2 个答案:

答案 0 :(得分:1)

根据您的评论,您可以将新标签存储在变量中:

var newTab = $("<li id='tab#" + o.tabCount + "' myTabPane='" + 
    o.tabId + o.tabCount + "' class='tab'><h3>Tab " + o.tabCount
    + "</h3></li>");
$('#' + o.tabListId).append(newTab);
newTab.click(function() {
    var paneId = '#' + $(this).attr('myTabPane');
    $(paneId).siblings().hide();
    $(paneId).show();
});

链接到working example at jsfiddle

顺便说一句,您的原始脚本将第二个'放在错误的位置:

$("<li id='tab#'" + o.tabCount + " class='tab'><h3>Tab "
              ^^^

答案 1 :(得分:1)

您需要在按标记名称追加ID后再引用它们。

$(this).find("li").click(function(){  /* do work */});

如果你必须通过ID引用它,你可以这样做:

$(this).find("li").each(function(){
   var id = $(this).attr("id");
   /* do work */
});