-1

好的,我确信这很简单,但我已经经历了一百万次,但无法弄清楚如何让以下工作。以前我一直在使用 live() ,它工作得非常好。使用最新的 jQuery 移至“on”后,它不再起作用。下面是我的代码的简化版本。我有一个搜索字段,它在 keyup 上从 ajax 调用(搜索)返回具有类“结果”的项目列表。然后我想定位这些返回的元素。

$("input#search").on("keyup", function(e) {
    // Set Timeout
    clearTimeout($.data(this, 'timer'));

    // Set Search String
    var search_string = $(this).val();

    // Do Search
    if (search_string == '') {
        $("ul#results").fadeOut();
    }else{
        $("ul#results").fadeIn();
        $(this).data('timer', setTimeout(search, 100));
    };

});
$("li.result").on("click", function(e) {
    $(".selected").removeClass("selected");
    $(this).addClass("selected");
});
4

1 回答 1

1

如果这些元素是动态创建的(听起来像是),您需要将事件附加到已知的父级,然后进行相应的过滤:

$("body").on("click", 'li.result', function(e) {
    $(".selected").removeClass("selected");
    $(this).addClass("selected");
});
于 2013-09-10T00:02:13.307 回答