1

Jquery1.7.1とiPad1iOS3を使用しています。

入力要素にフォーカスがない限り、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がいつ変更されるかはわかりません。これは、resprective要素を「離れた」後でも、かなりの期間持続するように見えるためです。

質問
iOSでフォーカスされた要素を検出できない理由はありますか?activeElementを使用してこれを設定する方法のヒントがいくつかあるので、ぼかしの場合、activeElementも歓迎されるため、入力がなくなります。

手伝ってくれてありがとう!

4

1 に答える 1

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

これは私にとってはうまくいくようですが、入力要素にフォーカスがない場合、スクロール中に関数が複数回起動されます。

于 2012-07-27T18:08:30.977 に答える