1

在此代码中,当有人输入用户名时,我只想显示该行并隐藏其他行。

<input type="text" id="usearch">
<table class="table myTable">
    <thead>
        <tr>        
            <th></th>
            <th>User</th>                                            
        </tr>
    </thead>   
    <tbody id="searchbody">
        <tr>
            <td>Jhon</td>
        </tr>
        <tr>
            <td>Jane</td>
        </tr>
        <tr>
            <td>Sarah</td>
        </tr>
        <tr>
            <td>Peter</td>
        </tr>
        <tr>
            <td>Paul</td>
        </tr>
    </tbody>
</table>



jquery

$(document).on('keyup','.myTable',function() {
    var uval = $(this).val();
    alert(uval);
    if(uval != '') {
        $('.myTable tr').hide();
        $('.myTable tr td')each(function() {
            if($(this).is(':contains('+uval+')')) {
                $(this).parent('tr').show();
            }
        });
    }
});

小提琴:http : //jsfiddle.net/nzh6/ 它不工作。代码有什么问题?

4

1 回答 1

1

keyup 事件必须附加到输入元素

$('#usearch').on('keyup', function () {
    var uval = $(this).val();
    var $trs = $('.myTable tbody tr');
    if (uval != '') {
        $trs.hide().filter(function(){
            return $(this).text().toLowerCase().indexOf(uval.toLowerCase()) >= 0;
        }).show()
    } else {
        $trs.show();
    }
});

演示:小提琴

于 2013-10-19T08:44:07.250 回答