2011-11-07 10 views
0

動作しない私は、IEとこだわっている:(jQueryの(死ぬ)は

我々は<select>要素の変化イベントをトラップするために必要ですが、IEがサポートされていないものを、推測そのイベントが。

は、だから私はそれがクリックされたときにすぐ下 <select>が。その部分は正常に動作を示していること。問題がある、私は selectを非表示にする <input type="text">で。それを模倣する方法を作成したときにユーザーがクリック select

私はclickbody、最初はうまく動作しますが、2回目にselectが隠れてしまいます。ここで

コードの簡素化バージョン:

$('.product').live('click',function(){ 
    // Show the <select id="select"> code goes here 

    // this is the event to close the select 
    $('body').die().live('click', function(){ $('#select').fadeOut(250); return;}); 

    // get the click on the select element 
    $('#select').die().live('click',function(){ 
     // kill the close the select 
     // THIS IS THE .die() THAT DOES NOT WORK 
     $('body').die(); 

}); 

質問 このコードで何か問題はありますか?またはこれを行うには良い方法がありますか?私はIEに固執していることを忘れないでください。

+1

Internet Explorer(少なくとも7人以上)が「変更」イベントをサポートしていますか? [ここにjsfiddleデモンストレーションがあります。](http://jsfiddle.net/23qm3/) – Pointy

+0

あなたは投票できるので、@Pointyを回答に投稿できますか?あなたは私に学校に値する。 –

+0

ハハ確かに!!ちょっと待ってください... – Pointy

答えて

1

Internet Explorer 7以上(IE7は主に口紅付きIE6ですが、簡単にはテストできません)doは変更イベントをサポートしています。 Hereは本当にシンプルなデモのjsfiddleです。

IEがイベントで奇妙なことをするのは間違いありません。たとえば、「変更」は(少なくとも<select>から、おそらく他のものから)バブルしませんが、それを上回るjQueryパッチが適用されます。また、チェックボックスとラジオボタンの古典的な問題があります。これらのボタンは、フォーカスを失うまで「変更」しないため、基本的に役に立たなくなります。それらのために、私は "クリック"うまく動作することがわかります。

1

.die()が正しく機能するためには、.die()で使用されるセレクタは、.live()で最初に使用されたセレクタと正確に一致する必要があります。

+0

あなたが$( "#demo")を呼び出すと、 –

+1

の例を参照してください。live( "click"、click_does_this); dieは$( "#demo")と呼ばれなければなりません。die( "click"、click_does_this); $( '#demo')ではありません。特にIEの互換性を扱っている場合。いずれにしても、.on()と.off()を使ってjQuery 1.7を試してみると、IEの互換性がはるかに向上していると言われています – John

関連する問題