我有一个div,我通过jQuery动态创建一些链接/按钮。当这个div失去焦点时,我需要删除它。这部分我可以做得很好。整个div和儿童jQuery聚焦
但是,现在我在div的包装上有focusout事件,当我点击div内的按钮时,包装失去了焦点,并且我的事件被触发。检查单击的元素是否是我可以做的包装的子元素,但由于包装不再具有焦点,我的事件不会再次触发以除去div。
我也尝试过.blur,但这并没有奏效。
这样做的最好方法是什么?
我有一个div,我通过jQuery动态创建一些链接/按钮。当这个div失去焦点时,我需要删除它。这部分我可以做得很好。整个div和儿童jQuery聚焦
但是,现在我在div的包装上有focusout事件,当我点击div内的按钮时,包装失去了焦点,并且我的事件被触发。检查单击的元素是否是我可以做的包装的子元素,但由于包装不再具有焦点,我的事件不会再次触发以除去div。
我也尝试过.blur,但这并没有奏效。
这样做的最好方法是什么?
$("#yourDiv").focusout(function() {
if ($(this).has(document.activeElement).length == 0) {
// remove div
}
});
$(this)
=您关注的div。
document.activeElement
=当前焦点的元素。
$(this).has(document.activeElement)
仅仅是检查是否有效元素的DIV的孩子
与普通的JavaScript解决这个使用事件参数给出的relatedTarget的方式:
element.addEventListener('focusout', function(event) {
if (element.contains(event.relatedTarget)) {
// don't react to this
return;
}
// do something
});
请提供一个小提琴。 – honk31 2013-03-12 18:47:39
请发布您的代码,然后*可选*提供小提琴。 – 2013-03-12 18:48:17