0

私は HTA コードを作成しているので、IE で立ち往生しています :(

要素内の変更イベントをトラップする必要がありました<select>が、IE はそのイベントをサポートしていません。

ということで、真似する方法を作ってみました。という<input type="text">ことで、クリックすると<select>すぐ下に表示されます。その部分はうまく機能します。select問題は、ユーザーが の外側をクリックしたときに を非表示にしたいことですselect

で をキャッチしようとしclickましたbodyが、最初は問題なく動作しますが、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で立ち往生していることを思い出してください。

4

2 に答える 2

1

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

于 2011-11-07T14:07:34.660 に答える
1

Internet Explorer 7 以降 (IE7 はほとんどがリップスティック付きの IE6 であるため、おそらく 6 ですが、簡単にテストすることはできません)、変更イベントをサポートしています。 これは、非常に単純なデモを含む jsfiddle です

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

于 2011-11-07T15:17:49.977 に答える