1

我正在使用 Jquery 1.7.1 和 iPad1 iOS3。

除非输入元素具有焦点,否则我需要在 scrollstart 上触发一个函数。下面的函数工作了很长时间,但突然间就没有了(我猜是因为切换到了 Jquery 1.7.1)

$(document).on('scroll', function(){
   if ( !$("input:focus").length > 0 ) {  
       self.hideAllPanels();
       }
  });

特别是 $('input:focus').length = 0,虽然我可以检测到在滚动事件之前触发的焦点事件。

我一直在摆弄一种解决方法:

 if ( !$(document.activeElement).get(0).tagName == "input" ){
 ....
 }

但我不确定 activeElement 何时发生变化,因为即使在我“离开”相应元素之后,它似乎也会持续很长时间。

问题
知道为什么我无法在 iOS 上检测到焦点元素吗?一些提示我可以如何使用 activeElement 进行设置,所以在模糊时,我不再将输入作为 activeElement 也是受欢迎的!

感谢帮助!

4

1 回答 1

2
$(document).on('scroll', function(){
   if (!$("input").is(':focus')) {  
       self.hideAllPanels();
   }
});

这似乎对我有用,但如果输入元素没有焦点,它将在滚动期间多次触发该功能。

于 2012-07-27T18:08:30.977 回答