0

選択ドロップダウンリストに取り組んでいます。このリストは、選択されたすべての要素(ユーザーが実行)を非表示フィールドの形式でコンテナー<DIV>に追加します。この選択には、選択コンテ​​ナから削除するオプションをユーザーに提供するリンクがあります。新しい選択が行われるたびに、コードは、ユーザーがREOMVEリンクをクリックした場合に選択を削除するように変更されている関数を自動的にバインドします。たとえば、次のようになります。

<DIV id = "selectedCategories">
カテゴリ#1 REMOVE_LINK
< input type = "hidden" value = "9524" name = "recordIds []" /> </ DIV>
<select>
<option> Category#2 </ option>
<option> Category#3 </ option>
<

ドロップダウンリストから新しい選択を行うたびに、以前に選択したすべての要素を削除機能で「再バインド」する必要があります。すべての要素が以前の要素を失っているように見えるため、何らかの理由でこれを行う必要があります。新しいものが追加されたときにバインドします。

これはFireFoxとSafariで非常にうまく機能しますが、IEではまったく機能しません。選択したすべての要素に対して毎回再バインドしますが、すべてのバインドが失われ、機能するのは、削除機能で追加してバインドした最後の要素だけです。

私の質問は、これに対する回避策はありますか、またはこの問題にどのように対処しますか?残念ながら、IEは世の中で最も広く使われているインターネットブラウザです:(

ありがとうございました

4

3 に答える 3

1

ライブ関数を使用するために正しいバージョンのjQueryを使用していることを確認しますか?比較的新しいため、最新バージョンを使用していることを確認する必要があります。

于 2009-11-11T15:20:22.870 に答える
0

live()関数を使用して、現在および将来のページ上の要素の各インスタンスにバインドできます。これにより、再バインドする必要がなくなります。

$("a.removeLink").live("click", function() {
  $(this).next("input").remove();
}
于 2009-09-10T22:49:26.627 に答える
0

運が悪かったのでLive機能を使用しました。何か問題が発生している可能性があります。私にとってうまくいったのは、他の関数を追加または再バインドする前に、関数のバインドを解除することでした。
したがって、このように関数をクリックイベントにバインドするとします。



 $('#deleteRecord1').bind('click',function() 
   { 
        // function here ...
   }
 );

$('#deleteRecord2').bind('click',function() { // function here ... } );


後でrecord1を削除するときに、このメソッドをrecord2に再バインドする必要があります。この方法で、IE7および8で機能させるようにします。



 $('#deleteRecordId').unbind('click');
 $('#deleteRecordId').bind('click',function() 
   { 
        // function here ...
   }
 );

この場合、「Id」は、選択されたすべてのIDが持つ一意のIDを指します。この例では、番号2に対応します。

于 2009-09-14T17:18:10.327 に答える