Javascript 为什么jquerykeyup会复制火?
我希望用户通过按“回车”键进行搜索 由于某些原因,当我多次使用enter键搜索时,我的程序开始重复调用youtubeAPI,即两组相同的5个视频。如果再次按ENTER键,它现在将返回3组5个视频…以此类推 下面是我如何允许ENTER键:Javascript 为什么jquerykeyup会复制火?,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我希望用户通过按“回车”键进行搜索 由于某些原因,当我多次使用enter键搜索时,我的程序开始重复调用youtubeAPI,即两组相同的5个视频。如果再次按ENTER键,它现在将返回3组5个视频…以此类推 下面是我如何允许ENTER键: //allow them start search by hitting enter key: $("#youtube-headerContainer-searchBox").focus(function() { $(this).keyup(functi
//allow them start search by hitting enter key:
$("#youtube-headerContainer-searchBox").focus(function() {
$(this).keyup(function(e) {
if(e.which == 13) {
startIndex=1;
fetchVideos();
console.log('enter key pressed');
}
});
});
我做了一把小提琴,你可以试一下:
只需键入搜索,然后按enter键。然后再次按enter键。一次又一次。你会明白我的意思的
有人知道为什么吗?因为您一次又一次地附加相同的事件处理程序 每次searchbox接收到焦点(因此您的
.focus()
处理程序运行)时,它意味着多了一个事件处理程序,因为.keyup()
用于将事件处理程序附加到keyup
事件的元素上-每次调用它时,您都会附加一个
我不知道您为什么需要.focus()
处理程序,您只需执行以下操作即可
$("#youtube-headerContainer-searchBox").keyup(function(e) {
if(e.which == 13) {
startIndex=1;
fetchVideos();
console.log('enter key pressed');
}
});
或者阅读。因为您一次又一次地附加相同的事件处理程序 每次searchbox接收到焦点(因此您的
.focus()
处理程序运行)时,它意味着多了一个事件处理程序,因为.keyup()
用于将事件处理程序附加到keyup
事件的元素上-每次调用它时,您都会附加一个
我不知道您为什么需要.focus()
处理程序,您只需执行以下操作即可
$("#youtube-headerContainer-searchBox").keyup(function(e) {
if(e.which == 13) {
startIndex=1;
fetchVideos();
console.log('enter key pressed');
}
});
或者阅读。简单修复:只需使用
one
方法附加焦点事件
...
$("#youtube-headerContainer-searchBox").one('focus', function(){
$(this).keyup(...);
});
...
jQuery文档:
不过,对于您的用例,不需要使用
焦点
处理程序。输入元素仅在被聚焦时才会收到keyup
事件 简单修复:只需使用one
方法附加焦点事件
...
$("#youtube-headerContainer-searchBox").one('focus', function(){
$(this).keyup(...);
});
...
jQuery文档:
不过,对于您的用例,不需要使用
焦点
处理程序。输入元素仅在被聚焦时才会收到keyup
事件 看着这个答案越来越大真是太好了。它现在有助于解决问题。@ntgCleaner增量应答样式;)。这就是为什么你有38.1k分;)我正在为这个答案编写代码,然后它说“1个新答案,点击这里刷新”@ NTGCuffor,当我是新来的,我看到一些人这样做,现在我已经习惯了,我不能做任何其他方式:)。谢谢;)看着这个答案越来越大真是太好了。它现在有助于解决问题。@ntgCleaner增量应答样式;)。这就是为什么你有38.1k分;)我正在为这个答案编写代码,然后它说“1个新答案,点击这里刷新”@ NTGCuffor,当我是新来的,我看到一些人这样做,现在我已经习惯了,我不能做任何其他方式:)。谢谢;)不幸的是,根本不需要“关注”。卡帕在上面的回答中去掉了焦点,使之成为特定元素的关键点。不幸的是,根本不需要“焦点”。卡帕在上面的回答摆脱了关注点,使其仅仅停留在特定元素的关键点上。