Javascript 筛选/搜索功能不以动态添加的行为目标
我找到了一个如何在表中搜索值的示例Javascript 筛选/搜索功能不以动态添加的行为目标,javascript,jquery,html,filter,html-table,Javascript,Jquery,Html,Filter,Html Table,我找到了一个如何在表中搜索值的示例 var $userRows = $('#UserTableContainer tr'); $('#searchuser').keyup(function () { var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase(); $userRows.show().filter(function () { var text =
var $userRows = $('#UserTableContainer tr');
$('#searchuser').keyup(function () {
var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
$userRows.show().filter(function () {
var text = $(this).text().replace(/\screen+/g, ' ').toLowerCase();
return ! ~text.indexOf(val);
}).hide();
});
它在“普通”表上工作得很好,例如,请参见,我使用jQuerys模板函数向表中添加值
function PrintUsers(item) {
$.template('userList', '<tr>\
<td>${Firstname} ${Lastname}</td>\
</tr>');
$.tmpl('userList', item).appendTo("#UserTableContainer");
}
函数PrintUsers(项){
$.template('userList','\
${Firstname}${Lastname}\
');
$.tmpl('userList',item).appendTo('UserTableContainer');
}
当我尝试搜索表中的元素时,它只过滤我的标题,即该表中的“名称”行
<table id="UserTableContainer">
<tr>
<th>Name</th>
</tr>
</table>
名称
有人知道我做错了什么吗?更新代码
对于动态添加的dom元素,您需要使用
'on'
,因此我们不能在当前dom上使用keyup。
使用方法是:
$(document).on(events, selector, data, handler);
托比亚斯,你的标记可能是错的 顺便说一句,如果您将使用表标题,并且您不希望它过滤这些:
var $rows = $('#table tr').not(':first');
好吧当我试图使用更新后的代码时,我不断得到“uncaughttypeerror:Object[Object Object]没有“on”方法”。我需要包括什么才能使用它吗?您可能正在使用旧版本的jQuery。在用于jquery 1.7+的works上,您可以使用live或delegate(delegate应用于1.7.x以外的jquery版本)。[阅读更多]这里()注意到我实际上可以在Intellisense中看到“on”函数。是的,我正在使用jQuery1.8。不过,我一直在犯错误。是否需要将函数添加到JavaScript文档的任何特定部分?是否将其包装在$(document).ready(function(){//code})。。首先,感谢您抽出时间回答我的问题。我已经试过把它包装起来。就绪标签,我也已经检查了链接。他们没有一个人告诉我出了什么问题/