2012-02-08 3 views
0

これはデスクトップのサファリで動作しますが、iOSバージョンではアラートがポップアップしません。 iOSの 'html'要素にバインドすることは可能ですか?ユーザーがページ上の他の場所をクリックするたびにドロップダウンメニューを閉じたいと思います。iOSはクリックするとjavascript機能をバインドします<html>

$('html').bind("click", function(){alert("clicked!")}) 

EDIT

jsfiddleは明らかに私の問題を取り除きますインラインフレームに埋め込ま以来、htmlとしてこれを投稿。このページをデスクトップのSafariで開くとうまく動作しますが、iOSシミュレータではクリックすると何も表示されません。

<html> 
    <head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
     $('html, body').bind("click", function(){alert("html or body")}) 
     $(document).bind("click", function(){alert("document")}) 
     }); 
    </script> 
    <body> 
    </body> 
</html> 

EDIT 2

また、これはiOSのシミュレータや、私のiPhone上で私のために動作しません。デリゲート()をアプリに入れてリンクをクリックすると、警告が表示されます。

<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
<body> 
</body> 
<script type="text/javascript"> 
    $(document).delegate('html, body', "click", function(){alert("html or body")}); 
</script> 
</html> 

EDIT 3

これは動作します!

<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
<body> 
    <div id="stuff">applesauce</div> 
    <div>other stuff</div> 
</body> 
<script type="text/javascript"> 
    $(':not[#stuff]').on("click", function(){alert("not stuff")}); 
</script> 
</html> 
+1

代わりに$( 'body')を使用してみましたか? –

+0

なぜ$( 'body')が代わりに機能するのですか?身体を聞くという言葉がどこかありますか? – spike

+0

私は参照を持っていませんが、各デバイスはjavascriptを多少扱いますので、iOSは$( 'html')を多少使い分けるかもしれません。 –

答えて

0

jQuery.click()はiOSでは正しく機能しません。 bind()と同じ問題があると思います。しかし、jQuery.delegate()は動作します。

$('html').delegate('body', 'click', function(){ alert("body"); }); 

あなたに適しています。おそらくon()も機能しますが、まだ試してみる機会はありませんでした。

脇に、そのスクリプトブロックをbodyタグの下に移動し、$(document).ready()を失う必要があります。

更新:最新のjQueryのビンテージでは、on(イベント、セレクタ、関数)が使えます。これはIOS上で動作し、イベントハンドラのリークに抵抗します。

$('body').on('click', ':not[#stuff]', function(){ alert("not stuff"); }); 
+0

私の2回目の編集を見ることができますか?私は運がないとこれを試みた。 – spike

+0

私は私の前に私のiPadを持っていないので、私は確認できません。しかし、私は目標も重要だと思う。上記の編集をお試しください。 – Jason

+0

ページのクリックを捕まえようとしている場合、これはうまくいかない可能性があります。タッチインターフェースのために、Safariはあなたの指が実際にやっていることを解釈するために奇妙なことをします。私がクリックしたときに要素を閉じることができるようにする必要があるとき、私はボディの代わりに「要素が表示されていません」というセレクタを使用しました。 – Jason

0

使用documentまたはbody要素の代わりに、html

$(document).bind("click", function(){ 
      alert("clicked!") 
    }); 

また、これを試すことができます。

$('html, body').bind("click", function(){ 
      alert("clicked!") 
    }); 
+0

私の編集を見なさい、ちょうどこれらの提案の両方を試みた。 – spike

関連する問題