过滤/搜索功能未定位动态添加的行

时间:2012-09-18 06:18:06

标签: 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 = $(this).text().replace(/\screen+/g, ' ').toLowerCase();
            return ! ~text.indexOf(val);
        }).hide();
    });

它正常"正常"表,请参见例如http://jsfiddle.net/7BUmG/2/但是,我使用jQuerys模板函数向表中添加值。

function PrintUsers(item) {
    $.template('userList', '<tr>\
         <td>${Firstname} ${Lastname}</td>\
         </tr>');

    $.tmpl('userList', item).appendTo("#UserTableContainer");
}

当我尝试在表格中搜索元素时,它只会过滤我的标题,即&#34;名称&#34;在这张表中排。

    <table id="UserTableContainer">
        <tr>
            <th>Name</th>
        </tr>
    </table>

任何人都有任何想法,我做错了什么?

2 个答案:

答案 0 :(得分:0)

更新代码 http://jsfiddle.net/7BUmG/128/
你需要使用'on'来添加动态的dom元素。所以我们不能在目前的dom上使用keyup。 使用方法是::

 $(document).on(events, selector, data, handler);

答案 1 :(得分:0)

Tobias,你的加价可能不对。

顺便说一句,如果您将使用表格标题,并且您不希望它过滤这些:

var $rows = $('#table tr').not(':first');