旧代码不能使用jQuery 1.9

时间:2013-10-08 08:28:15

标签: jquery

我有一段代码在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下运行?

2 个答案:

答案 0 :(得分:2)

在绑定keyup-event之后调用keyup()。也许:包含在版本之间发生了变化,所以空参数不匹配?我没有找到任何有关这方面的信息,但我现在看不出更多。

尝试添加if语句以检查值是否为空,并显示所有项目。

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

答案 1 :(得分:1)

试试这个

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

Demo