对于谷歌浏览器中的下拉菜单,jQuery点击事件不会立即触发

时间:2012-04-16 17:01:34

标签: jquery google-chrome

jQuery v 1.7.1

Chrome v 18.0.1025.162

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

  1. 点击下拉菜单
  2. 请注意,事件处理程序尚未触发(而在FF / Safari中则触发)
  3. 在下拉菜单仍有焦点的情况下,在计算机上使用Tab键到另一个应用程序
  4. 使用Tab键返回Chrome
  5. 请注意事件处理程序已解雇
  6. 可替换地,

    1. 点击下拉菜单
    2. 请注意,事件处理程序尚未触发
    3. 点击页面的其他部分,以便下拉失去焦点
    4. 请注意,事件处理程序尚未触发
    5. Tab键到计算机上的另一个应用程序
    6. 使用Tab键返回Chrome
    7. 请注意,事件处理程序尚未触发
    8. 
          $("#dropdown-id").detectRealTimeChange(function(){
                $("#some-div").html("html content");
          );
          /**
           * Detect a change to an input without requiring the input to lose focus
           */
          jQuery.fn.detectRealTimeChange = function(callback){
              var oldValue = $(this).val();
              var didRecordChange = false;
              $(this).keyup(function(){
                  var newValue = $(this).val();
                  if(oldValue != newValue){
                      if(!didRecordChange){
                          changeCount = changeCount + 1;
                          didRecordChange = true;
                      }
                  }
                  else{
                      if(didRecordChange){
                          changeCount = changeCount - 1;
                          didRecordChange = false;
                      }
                  }
                  if(typeof callback == 'function'){
                      callback.call(this);
                  }
              });
              $(this).click(function(){
                  var newValue = $(this).val();
                  if(oldValue != newValue){
                      if(!didRecordChange){
                          changeCount = changeCount + 1;
                          didRecordChange = true;
                      }
                  }
                  else{
                      if(didRecordChange){
                          changeCount = changeCount - 1;
                          didRecordChange = false;
                      }
                  }
                  if(typeof callback == 'function'){
                      callback.call(this);
                  }
              });
          

0 个答案:

没有答案