我正在尝试在新的自定义"下拉列表中添加事件处理程序"元件。 (使用' new'关键字创建。)
自定义下拉元素的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也是空的。
答案 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;。