有两个input
元素隐藏在模糊中。问题是,如果单击是在元素被隐藏在 DOM 之后的元素上,则导致模糊的单击事件会丢失。
如果单击的元素在模糊元素之前,它会按预期工作
这个简单的片段演示了:
<html>
<script src="./jquery.min.js" ></script>
<script type="text/javascript">
$(document).ready(function() {
$('input').blur(function(e) {
console.log('blurred');
$(this).hide();
});
$('.a').click(function() {
console.log('div clicked');
});
$(document).click(function() {
console.log('doc clicked');
});
});
</script>
<body>
<div id="div1">
<div class="a"><input /></div>
<div class="a"><input /></div>
</div>
</body>
</html>
如果单击底部输入,然后单击顶部,它会按预期工作 - “模糊”打印,然后“div clicked”,然后“doc clicked”,底部输入被隐藏。
如果单击顶部输入,则隐藏顶部输入的底部,仅“模糊”打印,并且无法在任何地方处理单击事件。
如果调用 tohide
被注释掉,它也可以按预期工作。
使用.live
并没有什么不同。
我可以想办法解决这个问题,但没有一个很好。关于为什么input
s 的顺序很重要或更好的解决方案的任何想法?
谢谢。