好的,我确信这很简单,但我已经超过了这一百万次,但无法弄清楚如何让以下工作。以前我一直在使用live(),它工作得非常好。使用最新的jQuery移动到“on”后,它不再有效。下面是我的代码的简化版本。我有一个搜索字段,在keyup上返回一个项目列表,其中包含来自ajax调用(搜索)的类“result”。然后我想要定位这些返回的元素。
$("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");
});
答案 0 :(得分:1)
如果动态创建这些元素(它听起来像是这样),您需要将事件附加到已知父级,然后相应地进行过滤:
$("body").on("click", 'li.result', function(e) {
$(".selected").removeClass("selected");
$(this).addClass("selected");
});