2011-07-25 14 views
0

私はこのコードを継承しています。これは、製品のページをフィルタリングするために使用されている選択メニューを生成しています。もともと、UL(オプションはLI)を生成していましたが、現在は選択リストに変換されています。オプションはすべてのブラウザに完全に表示され、IE(すべてのバージョン)を除くすべてのブラウザで効果的です。 IEではドロップダウンを使用できますが、オプションをクリックすると何も起こりません。IEで動作しない各ループ内のJqueryのクリックイベント

私はイベントを変更して選択するように変更しようとしましたが、すべてが壊れているようです。

ありがとうございました!

UPDATED
$.each(hazardClassification, function (i) { 
       cleanMenuforClass = hazardClassification[i].toLowerCase().replace(/ /g, '_').replace(/&./g, '_').replace(/\,/g, '').replace('/', '').replace('.', ''); 


       $("<option/>", { 
        "class": cleanMenuforClass, 
        click: function (event) { 
         $("#legend-inline-search").val(""); 
          $("#pipemarker-type-selection div.product-container").css('display', ''); 
         var clickedInput = $(this).attr("class"); 
         var clickedCheckbox = $(this); 
         if ($(this).is(":selected")) { 
           filterItems(hazardClassification[i], clickedInput, countItems, selectedItemsContainer, clickedCheckbox); 

          } else { 
           removeFilter(hazardClassification[i], clickedInput, countItems, selectedItemsContainer); 
          } 

        } 
       }).appendTo("#filter-by-classification select").append('<span>' + hazardClassification[i] + '"<span>'); 

     }); 

は:まだjQueryのを使用し、(それは私です)ダミーデザイナーのためのシンプルなものを維持し、回避策を見つけました。 Is there a workaround to trigger an option.click event in IE?

答えて

0

これはIEの問題だと思います。 IEは(オプションが関係している時に)いつも変わった振る舞いをします。

ニュースグループでこれが見つかりました。

IEの要素をクリックするネイティブイベントは使用できません。 IE は、オプション要素の高さと幅が常に0であることを報告しています。そのため、クリックポイントの位置を計算する方法はありません。

ので、私は「クリック」あなたの代わりにjQueryを使ってのjavascriptの回避策を使用する必要があると考えるイベント

+0

をお試しくださいIEはこれを取得しません。私はjQueryソリューション、少なくとも何らかの選択イベントをトリガすることを望んでいたが、別の方法を試してみる必要があるようだ。 – jennifer

0

ええ、私は一種の、その部分を考え出したことを手でこの

$.each(hazardClassification, function (i) { 
       cleanMenuforClass = hazardClassification[i].toLowerCase().replace(/ /g, '_').replace(/&./g, '_').replace(/\,/g, '').replace('/', '').replace('.', ''); 


       $("option", { 
        "class": cleanMenuforClass, 
        click: function (event) { 
         $("#legend-inline-search").val(""); 
          $("#pipemarker-type-selection div.product-container").css('display', ''); 
         var clickedInput = $(this).attr("class"); 
         var clickedCheckbox = $(this); 
         if ($(this).is(":selected")) { 
           filterItems(hazardClassification[i], clickedInput, countItems, selectedItemsContainer, clickedCheckbox); 

          } else { 
           removeFilter(hazardClassification[i], clickedInput, countItems, selectedItemsContainer); 
          } 

        } 
       }).appendTo("#filter-by-classification select").append('<span>' + hazardClassification[i] + '"<span>'); 

     }); 
+0

残念ながら、それはIEにオプションが生成されないようにするだけです。ありがとう、しかし! – jennifer

関連する問題