全球的所有元素
进入功能我已经写了代码:全球的所有元素
$('*').on('keyup',function(e){
if(e.keyCode == 13){
$(this).trigger('click');
}
});
上面的代码运行正常,直到jQuery的对话框。显然,只要我在对话框中敲入回车键。它有点像事件中的气泡。
我有2个对话框。第一个是确认对话框,第二个是消息对话框。当我碰到它会弹出消息对话框,当我在消息对话框中点击确定时,确认对话框将再次打开。
我想是这样的:
$('*').not('.ui-button').on('keyup',function(e){
if(e.keyCode == 13){
$(this).trigger('click');
}
});
这是对UI的按钮为输入事件的排斥。它不起作用。任何帮助,将不胜感激。感谢
编辑:
注意,我所说的对话使用链接打开。我想知道当我点击回车时这个链接是否被集中,所以当我在消息对话框中输入时再次调用对话框。
为什么不使用off
取消其活动?
$('*').on('keyup',function(e){
if(e.keyCode == 13){
$(this).trigger('click');
}
}).find(".ui-buttons").off('keyup'); // this unbinds the event so it won't trigger
显然没有努力解决。请看我的编辑谢谢 – Yaje 2014-12-08 09:02:36
可能是在处理程序注册时未创建UI按钮。
一种方法,你可以做的是一个单一的处理程序注册到文档对象,然后看到实际的目标是否是ui-button
像
$(document).on('keyup', function (e) {
var $target = $(e.target);
if ($target.closest('.ui-button').length) {
return;
}
if (e.keyCode == 13) {
$target.trigger('click');
}
});
显然不工作。请参阅我的编辑谢谢 – Yaje 2014-12-08 09:02:03
使用此代码,这个代码排除.ui-button
元素和内部元素.ui-button
类
$('body').on('keyup',function(e){
if(!$(e.target).closest('.ui-button').length && e.keyCode == 13){
$(e.target).trigger('click');
}
});
我承认我不是全局绑定的忠实粉丝,特别是因为这些问题。我觉得最好指定我想要绑定事件的元素的类型和/或位置。
其中一个原因是此事件冒泡,可悲的是在所有浏览器中行为不同。
我的建议是只将事件绑定到所需的元素,并将e.stopPropagation()
添加到被调用的函数中。
我知道这不是你正在寻找的答案,但我相信你应该考虑这种方法是更具体(更可靠)。
我通过模糊我点击打开对话框的链接来解决问题。
类似:
$('.links').find('a').on('click',function(){
$(this).blur();
});
做出小提琴,它会更容易使用的小提琴 – 2014-12-08 09:04:36