Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript onblur事件在模糊后执行_Javascript_Jquery - Fatal编程技术网

Javascript onblur事件在模糊后执行

Javascript onblur事件在模糊后执行,javascript,jquery,Javascript,Jquery,我一直关注模糊上的陌生人问题和jquery上的onblur事件。当您输入模糊时,首先执行onblur事件,然后使用.blur方法。但当您调用trigger.blur by cliclignal on anchor标记时,首先执行.blur方法,然后执行onblur事件。为什么会有这种差异,以及有什么解决办法 $(函数(){ $('a')。单击(函数(){ $('input').blur(); }) }) 功能测试(){ 警报(0); } $(函数(){ $('input').blur(函数()

我一直关注模糊上的陌生人问题和jquery上的onblur事件。当您输入模糊时,首先执行onblur事件,然后使用.blur方法。但当您调用trigger.blur by cliclignal on anchor标记时,首先执行.blur方法,然后执行onblur事件。为什么会有这种差异,以及有什么解决办法


$(函数(){
$('a')。单击(函数(){
$('input').blur();
})
})
功能测试(){
警报(0);
}
$(函数(){
$('input').blur(函数(){
警报(1);
})
})
注意:执行
$('input').blur()
没有多大意义,因为一次只有一个项目有焦点(如果有的话)。使用该语法后发生的任何事情都是因为jQuery(它触发注册的处理程序,并尝试将
blur
onblur
属性作为函数执行。另一方面,在常规DOM节点上调用
blur()
(如
$('input')[0]。blur()
),当前未聚焦的不会产生任何效果(模糊处理程序不会触发)

我不完全理解,你为什么要这么做,但是如果你坚持这样做,并且你想基本上确保你的模糊处理程序在onblur属性中定义的模糊处理程序之前启动,你可以使用双重方法(使用
jQuery.on
和常规处理程序寄存器)。 这样,第一个或第二个处理程序将在属性中指定的处理程序之前启动

这里的基本示例


它需要一些调整,特别是如果您关心它可能会多次触发(在这种情况下,动态地处理处理程序,或者将信息存储在某个地方,该事件已经被处理过)。

我认为它不会像您在问题
onblur event-execute after-blur
中提到的那样发生

当前代码首先触发内联
onblur
,然后触发jQuery的
blur

您的代码按预期工作,但这是一个更好的代码,它有一个
doc ready
和一个功能测试

function test() {
   alert(0);
}
$(function () {
   $('a').click(function () {
      $('input').blur();
   });

   $('input').blur(function () {
      alert(1);
   });
});

我不知道你的情况,但我总是先得到0,然后是1(Chrome)。“这样我总是先得到0,然后是1”-是的,你先得到0,然后得到1,即使代码OP已发布,所以我看不出这句话有什么意义。@InsertUserName here是的,这是正确的,但我无法区分所问的问题和所提供的小提琴OP的输出。它总是
alert(0)
这是从内联
onblur
调用的。无论是我的答案还是他提供的答案。@wtk:如果你模糊输入,你会得到0,然后是1,但是当你点击标签时,你会得到10@amit这是要求还是你经历过这种情况。你能给出一个浏览器名来测试吗。
function test() {
   alert(0);
}
$(function () {
   $('a').click(function () {
      $('input').blur();
   });

   $('input').blur(function () {
      alert(1);
   });
});