示例代码:http://jsfiddle.net/slolife/PnmxM/
我问这个问题虽然有很多类似的问题,但我觉得它们不一样。
我有一个文本框,当它模糊时,应该做点什么。
我也有一个链接,它总是可见的(似乎是其他问题的不同之处),点击后,应该做点什么。
我的模糊处理程序触发,但点击处理程序没有。
有没有正确的方法来解决这个问题?
更新
许多人指出警报导致了我的问题。谢谢。在我的真实代码中,我没有警报,而是从DOM中删除文本框。
所以我更新了小提琴,以便更好地反映使用console.log调用而不是alert()调用。任何额外的帮助表示赞赏。
答案 0 :(得分:9)
这是因为第一个alert
打破了第二个alert
,因为它是模态的。见:
在这里,我将消息附加到msgs
div,它按预期工作。
对于你更新的jsFiddle,这是一个(更新更新?)工作的一个:
您正在移除onBlur
中的输入框,因此,垂直移动Add item
,因此点击不再发生在Add item
上(因为您的鼠标指针在此期间没有移动,但在其他一些元素上(在这种情况下,是一个jsFiddle示例容器)。将Add item
移到正在消失的input
元素上方可以解决“如果可以,请点击我”问题。
答案 1 :(得分:1)
点击事件未触发,因为只有在释放鼠标按钮时才会触发。这种情况没有发生,因为可以看到模态对话框窗口(警报窗口)。如果您将提醒更改为console.log
,那么它可以完美运行......
答案 2 :(得分:1)
因为你正在使用alert
,你正在中断执行,这会导致我在Firefox中出现问题 - 但如果切换到console.log
并确保你有一个控制台(如Firebug)打开,你可以看到两个事件都在发生。
function onBlur() {
console.log('blur');
}
function addItem() {
console.log('add');
}
$(document).ready(function() {
$('#items').delegate('input','blur', onBlur);
$('#addItem').click(addItem);
});
答案 3 :(得分:0)
根据您的要求,如果您无法重新排列用户界面,另一种解决方法是简单地绑定到mousedown
事件而不是click
。我已经添加了我的own modification console.log()jsFiddle来演示。
我遇到了这个问题,其中的菜单显示用户何时关注文本框,并在模糊时隐藏。菜单中的点击不会在Chrome中触发,因为模糊隐藏了mousedown上的菜单,所以当鼠标重新启动时,指针不再出现在菜单中(因为它已经消失),因为然后在模糊隐藏菜单之前调用处理程序,我的点击事件就会触及目标。
答案 4 :(得分:0)
在更新小提琴http://jsfiddle.net/slolife/PnmxM/之后尝试。
将onBlur函数更新为此。
模糊并点击即可。
function onBlur() {
console.log('blur');
$('#item').val("test");
}
目前的问题是:点击不会触发,因为"添加项目"正在改变(因为文本字段消失了)。