Javascript 添加委派后未触发事件
我正在使用提供一个可搜索列表。我使用下面的代码向现有表中添加了另一行Javascript 添加委派后未触发事件,javascript,jquery,events,delegates,Javascript,Jquery,Events,Delegates,我正在使用提供一个可搜索列表。我使用下面的代码向现有表中添加了另一行 $('.add-package').unbind("click").on("click", function(){ var packageName = $('#container-search').val(); var newRowContent = '<tr>'+ '<td>'+ '<
$('.add-package').unbind("click").on("click", function(){
var packageName = $('#container-search').val();
var newRowContent = '<tr>'+
'<td>'+
'<div class="row row-padding">'+
'<div class="col-xs-4">'+packageName+'</div>'+
'</div>'+
'</td>'+
'<td><button>delete</button></td>'+
'</tr>';
$("[id^=searchable-container] > table > tbody").append(newRowContent);
$('#container-search').val(null);
$('#container-search').keyup();
});
因为上面的代码只适用于现有的列表项(或表行),所以我修改了下面的代码以添加委派
this.$search.on( 'change keyup', 'tbody tr' ,function() {
that.search( $( this ).val() );
that.updateStriping();
});
无论如何,在添加委派选择器后,此代码将不会激发,搜索将不起作用。我做错了什么
更新
我可以在这里展示这个问题的一个最小版本。删除
.laki
,然后运行示例。它将触发单击事件。但是在添加.laki
以添加委派之后,单击事件将不会触发。看起来这个插件在页面加载时只存储元素。我想当您在中添加新行时,您只需重新初始化插件。@haxtbh:可能吧。无论如何,当我通过将选择器添加到on click事件(用于将元素添加到列表中)进行委托时,click事件也不会起作用。除非您确实需要,否则永远不建议更改插件源代码。您所做的更改可能会导致插件中其他地方出现问题,这也可能导致js错误,导致其他脚本停止working@haxtbh当前位置但这是一个我们需要解决的问题。对吗?授权并不像你所拥有的那样有效。我已经更新了小提琴来展示它是如何工作的-
this.$search.on( 'change keyup', 'tbody tr' ,function() {
that.search( $( this ).val() );
that.updateStriping();
});