jQuery点击处理函数不会触发DOM加载后添加的元素
我相信我可以用.live做到这一点,但该方法已被弃用。 这是问题所在:
我有一个点击处理函数,应该触发任何具有类“myClickEl”的元素。 这适用于加载时文档中存在的“myClickEl”元素。 但是,如果我在加载DOM后添加myClickEl元素,则不会触发单击处理程序。
这是代码。 我试过以下两种方法:
选项1:
jQuery('.myClickEl').on('click', function(){ var formText='This is some text to paste'; jQuery(this).parent().next('textarea').val(''); jQuery(this).parent().next('textarea').val(formText); });
选项2:
jQuery('.myClickEl').click(function(){ var formText='This is some text to paste'; jQuery(this).parent().next('textarea').val(''); jQuery(this).parent().next('textarea').val(formText); });
您需要使用事件委派
jQuery(document).on('click','.myClickEl', function() { var formText='This is some text to paste'; jQuery(this).parent().next('textarea').val(''); jQuery(this).parent().next('textarea').val(formText); });
来自http://api.jquery.com/on/
您对on的用法感兴趣:
.on( events [, selector ] [, data ], handler(eventObject) )
JQuery给出的示例是
$( "#dataTable tbody" ).on( "click", "tr", function() { alert( $( this ).text() ); });
你应该做类似的事情,首先选择一个在页面上是静态的元素,然后选择应该使用click事件的选择器。
最佳实践是尽可能具体,因此尝试选择合理的第一个目标,以便JS不必检查每个单击事件以查看它是否应该运行。