简单的问题,因为jQuery .live()的1.7版本已经被弃用,而不是.on(); 但.on()似乎不适用于通过JavaScript呈现并加载到DOM中的元素.所以我的问题是,应该仍然使用.live()或.on()如何捕获这些新生成的元素?
举个例子,这是我的代码:
$("#listitem").append("<li id='removeitem'>" +
formdata + ' <a href="#">Remove</a></li>');
Run Code Online (Sandbox Code Playgroud)
当我尝试通过.on()操作这个元素时 - 结果什么都没有,而.live()能够抓住这个元素.
$("#removeitem").live("click", function(event) { alert($(this).text()); });
Run Code Online (Sandbox Code Playgroud)
live
版:
$("#removeitem").live("click", function(event) { alert($(this).text()); });
Run Code Online (Sandbox Code Playgroud)
应改为:
$("#containerId").on("click", "#removeitem", function(event) {
alert($(this).text());
});
Run Code Online (Sandbox Code Playgroud)
加载到containerId
的静态元素在哪里removeitem
.
您可以简单地body
用作静态元素:
$("body").on('click', '#removeitem'm fn);
Run Code Online (Sandbox Code Playgroud)
但是代码效率会降低,只需尝试使用它来展示它是如何工作的.
笔记:
id
因为它是无效的标记.listitem
代码中的静态元素.更新:
也许那是我的问题 - 我只是用.on替换了.live
你不能简单地替换它们......它们以其他方式工作,并且具有不同的参数!
阅读每个功能的文档:
on
:
.on(events [, selector] [, data], handler(eventObject))
Run Code Online (Sandbox Code Playgroud)
.live( events, handler(eventObject) )
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
127 次 |
最近记录: |