0

私は簡単な機能を持っています:

//loop through all the options and hide "dts"
$('#userSpec > option').each(function() {
  console.log(this);
  if(this.value.indexOf("d")==0) {
    $(this).css("display", "none");
  }
});

Ubuntu、Firefox 用の Chrome の最新バージョンでは正常に動作しますが、Opera では動作しません。Mac で動作するのは Firefox だけです。また、「display」、「none」、「!important」を使用しようとしましたが、.css を .style または .attr に変更しました - 同じ結果です。これらのcssパラメーターを使用してクラスを追加し、.addClassを使用しましたが、変更はありません。なぜこれが起こっているのか、どうすれば修正できるのでしょうか?

どうもありがとう。

4

1 に答える 1

1

これに対する真のクロスブラウザ方式は、jQuery の.remove()関数を使用することだけです。option後で復元するために、削除された要素を配列に簡単に保存できます。たとえば、次のコードは、あなたが求めているものと同様のことを達成するはずです:

var to_restore = [ ],
    selectBox = $('#userSpec');

//loop through all the options and hide "dts"
selectBox.children('option').each(function() {
    if(this.value.indexOf("d")==0) 
    {
        to_restore.push({ 'index': $(this).index() - 1, 'ele': $(this) });
        $(this).remove();
    }
});

jsFiddle Demoをまとめました。この解決策は理想的ではありませんが、特定のブラウザーは要素をサポートdisplay: noneしていないためoption、これが問題に対する唯一の実際の解決策だと思います。

于 2013-07-18T22:40:18.910 に答える