Javascript似乎不起作用。在JSFiddle中它起作用

时间:2015-09-15 09:45:26

标签: javascript jquery html

我正在使用Javascript搜索数据表。现在它被硬编码了。

好的,所以这是我的js代码:

$('#search').keyup(function() {

    var val = '^(?=.*\\b' + $.trim($(this).val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$',
        reg = RegExp(val, 'i'),
        text;

    $rows.show().filter(function() {
        text = $(this).text().replace(/\s+/g, ' ');
        return !reg.test(text);
    }).hide();
});

它使文本栏搜索在下表中。 表格如下:

<input type="text" id="search" placeholder="Type to search">
<table id="table">
    <tr>
        <th>Naam</th>
        <th>Product -</th>
        <th>Locatie</th>
    </tr>
    <tr>
        <td>Henk</td>
        <td>Laptop</td>
        <td>Utrecht</td>
    </tr>
    <tr>
        <td>Klaas</td>
        <td>Beamer</td>
        <td>Gorinchem</td>
    </tr>
    <tr>
        <td>Sjaan</td>
        <td>Opnameapparatuur</td>
        <td>Gorinchem</td>
    </tr>
</table>

当我在JSfiddle中使用代码时,它可以正常工作,但是只要我在html / php中使用它就没有了。

我的结果是让它与从sql数据创建的表一起工作,但我需要它首先使用硬编码数据来确保。

编辑:可以找到JSfiddle here

1 个答案:

答案 0 :(得分:2)

正如您所指出的那样,您在尝试加载DOM之前就已经尝试过了。

这个小提琴只是你的jQuery ready函数

http://jsfiddle.net/7BUmG/3393/

$(function(){
        var $rows = $('#table tr');
        $('#search').keyup(function () {

            var val = '^(?=.*\\b' + $.trim($(this).val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$',
                reg = RegExp(val, 'i'),
                text;

            $rows.show().filter(function () {
                text = $(this).text().replace(/\s+/g, ' ');
                return !reg.test(text);
            }).hide();
        });

});