jQuery v 1.7.1
铬 v 18.0.1025.162
我有一个附加到下拉菜单的 jquery click 事件处理程序。在 FF/Safari 中,事件处理程序在单击后立即触发,但我在 Chrome 中观察到奇怪的行为:
- 在下拉菜单中单击
- 请注意,事件处理程序没有触发(而在 FF/Safari 中)
- 当下拉菜单仍然具有焦点时,Tab 到计算机上的另一个应用程序
- 回到 Chrome
- 请注意,事件处理程序已触发
或者,
- 在下拉菜单中单击
- 请注意,事件处理程序尚未触发
- 单击页面的另一部分,使下拉菜单失去焦点
- 请注意,事件处理程序尚未触发
- 跳到计算机上的另一个应用程序
- 回到 Chrome
- 请注意,事件处理程序尚未触发
$("#dropdown-id").detectRealTimeChange(function(){
$("#some-div").html("html 内容");
);
/**
* 检测输入的变化而不需要输入失去焦点
*/
jQuery.fn.detectRealTimeChange = 函数(回调){
var oldValue = $(this).val();
var didRecordChange = false;
$(this).keyup(function(){
var newValue = $(this).val();
如果(旧值!= 新值){
如果(!didRecordChange){
变化计数 = 变化计数 + 1;
didRecordChange = true;
}
}
别的{
如果(didRecordChange){
更改计数 = 更改计数 - 1;
didRecordChange = false;
}
}
if(typeof 回调 == 'function'){
回调.call(this);
}
});
$(this).click(function(){
var newValue = $(this).val();
如果(旧值!= 新值){
如果(!didRecordChange){
变化计数 = 变化计数 + 1;
didRecordChange = true;
}
}
别的{
如果(didRecordChange){
更改计数 = 更改计数 - 1;
didRecordChange = false;
}
}
if(typeof 回调 == 'function'){
回调.call(this);
}
});