我相信我可以用.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);
});
答案 0 :(得分:9)
您需要使用Event delegation
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);
});
答案 1 :(得分:1)
您对on:
的使用感兴趣.on( events [, selector ] [, data ], handler(eventObject) )
JQuery提供的示例是
$( "#dataTable tbody" ).on( "click", "tr", function() {
alert( $( this ).text() );
});
你应该做类似的事情,首先选择一个在页面上是静态的元素,然后选择应该使用click事件的选择器。
最佳做法是尽可能具体,因此请尝试选择合理的第一个目标,以便JS不必检查每个点击事件,看它是否应该运行。