jquery - `.live()` 和 `.autocomplete()` 之间不一致

标签 jquery

在下面的代码中,.live() 不起作用,但 .autocomplete() 起作用。为什么? (参见http://jsfiddle.net/fRpCy/1/)

var input = [];
input.push($('input'));

$(input).live('keydown', function (event) {
    console.log('You have pressed a key!');
});

$(input).autocomplete({ source: ['test1', 'test2'] });

最佳答案

.live() 查询对象方法对本质上是选择器的查询进行操作。 $([$('input')]) 不是选择器查询,它是对包含选择器查询的数组的查询。

来自the docs :

... the .live() method should always be called directly after a selector ...

<小时/>

从我的评论中复制:

.autocomplete() 之所以有效,是因为它的操作更符合其他 jQuery 函数,这些函数枚举查询提供的对象并立即对它们进行操作。 .live() 不会枚举,而是检查稍后的查询 - 每当触发任何事件时。由于查询不是它所期望的形式,因此它会忽略它。

关于jquery - `.live()` 和 `.autocomplete()` 之间不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7277758/

相关文章:

javascript - JS 下拉菜单

jquery - 在大型 javascript 项目中包含/组织 HTML

javascript - 表格发送不再起作用

javascript - 从我正在处理的同一个 html 文件中获取属性

jQuery 元素属性

javascript - 返回字符串中第一个数字之前出现的所有字母

附加 html 时的 jquery 动画

javascript - 在我的自定义模态框内滚动

javascript - 有没有 Yii 小部件 "Radio Button Set "?

javascript - JQuery .resizable,如何为 alsoResize 属性选择子项