1

jQuery v 1.7.1

铬 v 18.0.1025.162

我有一个附加到下拉菜单的 jquery click 事件处理程序。在 FF/Safari 中,事件处理程序在单击后立即触发,但我在 Chrome 中观察到奇怪的行为:

  1. 在下拉菜单中单击
  2. 请注意,事件处理程序没有触发(而在 FF/Safari 中)
  3. 当下拉菜单仍然具有焦点时,Tab 到计算机上的另一个应用程序
  4. 回到 Chrome
  5. 请注意,事件处理程序已触发

或者,

  1. 在下拉菜单中单击
  2. 请注意,事件处理程序尚未触发
  3. 单击页面的另一部分,使下拉菜单失去焦点
  4. 请注意,事件处理程序尚未触发
  5. 跳到计算机上的另一个应用程序
  6. 回到 Chrome
  7. 请注意,事件处理程序尚未触发
    $("#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);
            }
        });
    
4

0 回答 0