jQuery对未来元素的function?
$("#dataTable tbody").on("click", "tr", function(event){ alert($(this).text()); });
这个语法是针对已经在页面上的tr吗?
如果没有,未来tr元素的语法是什么?
对于#dataTable tbody
未来元素,您的代码应该可以工作。 要将点击一直委托给文档,在页面的任何位置允许将来的
使用相同的处理程序,请尝试:
$(document).on("click", "tr", function(event){ alert($(this).text()); });
添加到Davids接受的答案,您还可以使用此解决方案将多个事件绑定到选择器以及所有未来的匹配元素。
例如输入元素。
$(document).on({ focus:function(){ alert($(this).val()); }, blur: function(){ alert($(this).val()); } }, 'input[type=text]');
这将处理所有
,无论它们何时被创建,但仅在当前存在的#dataTable tbody
。
它相当于.delegate
。
你必须使用jQuery’S .live()作为未来的元素
错了,因为这是jQuery 1.7(我在发布我的答案时很快)。
.on()
适用于所有(未来)元素。
来自api.jquery.com/on/
.on()方法将事件处理程序附加到jQuery对象中当前选定的元素集。 从jQuery 1.7开始,.on()方法提供了附加事件处理程序所需的所有function。 有关从旧的jQuery事件方法转换的帮助,请参阅.bind(),. delegate()和.live()。 要删除与.on()绑定的事件,请参阅.off()。 要附加仅运行一次然后自行删除的事件,请参阅.one()
来自api.jquery.com/live/
从jQuery 1.7开始,不推荐使用.live()方法。 使用.on()附加事件处理程序。 旧版jQuery的用户应该使用.delegate()而不是.live()。