在JQuery中,我无法将事件处理程序添加到<ul>中新添加的<li>

时间:2015-10-26 14:28:20

标签: javascript jquery

我正在尝试在新的自定义&#34;下拉列表中添加事件处理程序&#34;元件。 (使用&#39; new&#39;关键字创建。)

自定义下拉元素的html用法有点像这样:

<ul>

它使用自定义JS使其像普通下拉列表一样工作。

这在正常情况下运行正常,但在我更新下拉列表<li>时似乎无效,使用jQuery的空并追加。 (新<ul> s)

单击时,eventHandler应触发警报。到目前为止,我已将问题缩小到<li>的jQuery对象,该对象具有新atomUL.append(options_HTML); testObj("atomUL", atomUL); s的空属性值,但长度属性是正确的。

非常感谢任何进一步的帮助!

以下是代码的主要部分:

atomUL

<ul>options_HTML的jQuery对象 <li>:包含3个testObj标记的字符串 { "0": {}, "1": {}, "2": {}, "length": 3, "prevObject": { "0": { "jQuery1112017214052332565188": 8 }, "length": 1, "context": { "jQuery1112017214052332565188": 70, "location": { "hash": "", "search": "", "pathname": "/index.php/tests/forms-ui-test/", "port": "", "hostname": "elementary.local", "host": "elementary.local", "protocol": "http:", "origin": "http://elementary.local", "href": "http://elementary.local/index.php/tests/forms-ui-test/", "ancestorOrigins": {} } }, "selector": "#fields" }, "context": { "jQuery1112017214052332565188": 70, "location": { "hash": "", "search": "", "pathname": "/index.php/tests/forms-ui-test/", "port": "", "hostname": "elementary.local", "host": "elementary.local", "protocol": "http:", "origin": "http://elementary.local", "href": "http://elementary.local/index.php/tests/forms-ui-test/", "ancestorOrigins": {} } }, "selector": "#fields ul.dropdown > li" } :在控制台中输出对象。

控制台输出:

sysssispackage(folders)

注意:即使在附加li后,键0,1,2也是空的。

1 个答案:

答案 0 :(得分:0)

如果你没有看到你在jQuery中处理这些点击事件的方式,我就不肯定,但听起来你还没有将事件绑定到现有的父元素。

有类似......

$("li").click(function() {
  // do something
});

...适用于任何&#34; li&#34;已经存在于页面加载中,因为绑定了click事件时就是这样。但是,当您通过jQuery AFTER页面加载添加元素时,他们将不会拥有相同的绑定。因此,您可以做的是绑定到现有元素并委托给它的后代。

像...一样的东西。

$("body").on("click", "li", function() {
  // do something
});

...适用于任何&#34; li&#34;这是&#34;身体的后代&#34;。