1

我有一段代码在 jQuery 1.7 或 2.0 下运行良好,但在 jQuery 1.9 下无法运行。加载页面时列表变为空。

该函数用于过滤列表,当用户输入文本时,列表会发生变化。

HTML:

<input type="text" id="keyword" />

<ul>
    <li>fa</li>
    <li>abc</li>
    <li>bcd</li>
    <li>def</li>
</ul>

JS:

$("#keyword").keyup(function () {
    $("ul li").hide().filter(":contains('" + ($(this).val()) + "')").show();
}).keyup();

例如,当用户输入“a”时,列表将为“fa,abc”,当用户输入“bc”时,列表将为“abc,bcd”。

我在这里创建了一个演示:http://jsfiddle.net/nmVfq/2/

如何更改此脚本以使其在 jQuery 1.9 下工作?

4

2 回答 2

2

在绑定 keyup 事件之后调用 keyup()。也许 :contains 在版本之间发生了变化,所以空参数不匹配?我没有找到任何关于那个的信息,但我现在不能再看更多了。

尝试添加 if 语句来检查值是否为空,如果是则显示所有项目。

$("#keyword").keyup(function () {
    if( $(this).val() == '' ) {
      $("ul li").show();
    } else {
     $("ul li").hide().filter(":contains('" + ($(this).val()) + "')").show();
    }
}).keyup();
于 2013-10-08T08:37:09.807 回答
1

尝试这个

$("#keyword").keyup(function () {
    if($(this).val()==""){
        $("ul li").show();
        return
    }
    $("ul li").hide().filter(":contains('" + ($(this).val()) + "')").show();
}).keyup();

演示

于 2013-10-08T09:05:13.260 回答