首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >处理父元素的模糊事件,该事件由子元素上的焦点和单击子元素的外部触发

处理父元素的模糊事件,该事件由子元素上的焦点和单击子元素的外部触发
EN

Stack Overflow用户
提问于 2016-01-19 14:35:36
回答 4查看 13.2K关注 0票数 4

我有一个包含一个子框输入type=number的"parent div“。当用户在输入框之外单击时,我使用父div的blurfocusout事件在其他地方使用输入值。

我还需要在某些地方使用$('inputbox').trigger('focus'),它会意外地触发"parent div“的blur事件,并在该事件上运行代码。

请提供一个解决方案,以停止对子元素焦点的此父模糊事件,或者提供一种方法来确定焦点是通过子元素上的触发器(‘focus’)还是通过用户在父div外部单击来创建的。

我只需要在用户单击父模糊时触发它&而不是当焦点通过代码触发时。

EN

回答 4

Stack Overflow用户

发布于 2016-01-19 14:39:10

使用jquery,您可以非常容易地创建自定义事件,例如:

代码语言:javascript
代码运行次数:0
运行
复制
$('inputbox').trigger('special-focus');

然后,您可以像等待任何其他事件一样等待此事件:

代码语言:javascript
代码运行次数:0
运行
复制
$('div').on('special-focus' , function(){ ... } );

这将防止您的事件干扰内置事件。

我猜如果你不想使用这个建议,那就在你的点击处理程序或孩子的焦点处理程序中这样做

代码语言:javascript
代码运行次数:0
运行
复制
 .on('focus' , function(e){
    e.stopPropagation();
    e.preventDefault();
   /// the rest of your code ...
 });

这将停止将事件传播到父元素

票数 2
EN

Stack Overflow用户

发布于 2018-12-06 23:28:22

这对我来说是完美的:

代码语言:javascript
代码运行次数:0
运行
复制
if (e.relatedTarget === null) ...
票数 2
EN

Stack Overflow用户

发布于 2016-08-17 01:50:49

对我来说起作用的是检查处理函数中eventObject对象的relatedTarget属性。

代码语言:javascript
代码运行次数:0
运行
复制
$("#parentDiv").focusout(function (eventObject) {
    if (eventObject.relatedTarget.id === "childInputId")
        /// childInput is getting focus
    else
        /// childInput is not getting focus
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34870012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档