【问题标题】:Javascript Event stopPropagation on different Event Types不同事件类型上的 Javascript 事件 stopPropagation
【发布时间】:2011-07-28 02:02:04
【问题描述】:

我有一个标签,当“聚焦”时,我会显示一个 .当我单击文档正文时,我希望它关闭。但是,当使用两种不同的事件类型时,这似乎不起作用:

<input id='input' />  
<div id='div style='display:none;'>
</div>

$('#input').focus( function(e){  
   e.stopPropagation();  
   $('#div').show()  
});

$(document).click( function(){  
   $('#div').hide();  
});

似乎e.stopPropagation() 仅停止传播“onfocus”事件。自从我将代码切换为:$('#input').click() 之后,它就可以正常工作了。

只是好奇是否有任何方法可以使用上述代码进行此操作? (想更了解JS)

谢谢!

【问题讨论】:

  • 您的 div id 中缺少结尾 ' 是否是您的问题中的拼写错误?

标签: javascript jquery events propagation


【解决方案1】:

你可以这样做

$('#input').bind('focus blur', function() {
    $('#div').toggle();
})

http://jsfiddle.net/u9xwb/查看工作示例

【讨论】:

  • 是的,我能做到。但是有没有办法用我正在尝试的方式来做到这一点?这将使我对 javascript 有更深入的了解,并为学习语言的某些领域提供指导。
  • 这不是给定问题的答案
【解决方案2】:

你是对的,它只会杀死你订阅的事件,你需要在输入时停止点击事件。

$('#input').focus( function(e){  
   e.stopPropagation();  
   $('#div').show();
}).click( function(e){  
   e.stopPropagation();
});

$(document).click( function(){  
   $('#div').hide();  
});

【讨论】:

  • 是的。这将起作用。我有点想知道我是否可以以某种方式将同一元素的“焦点事件”与“点击事件”联系起来。但不确定是否可以。
  • 它只会停止当前事件
猜你喜欢
  • 1970-01-01
  • 2013-06-09
  • 2020-02-11
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 2021-12-10
  • 2018-07-20
相关资源
最近更新 更多