2011-06-21 6 views
0

$('.className').show();$('.className').hide();を使ってみましたが、IEでは動作しません。ドロップダウンリストにクラス別にオプションをグループ化する別の方法はありますか? this questionが見つかりましたが、答えは値 "a"または "c"を探しています。クラスごとにオプションを選択するにはどうすればよいですか?

//if 2 is selected remove C 
case 2 : $('#theOptions2').find('option:contains(c)').remove();break; 
//if 3 is selected remove A 
case 3 : $('#theOptions2').find('option:contains(a)').remove();break; 

実際のクラスを探すにはどうすればよいですか?あなたが使用しないオプションにdisabled属性を追加することができます

EDIT

<select id="theOptions2"> 
    <option value="a">a</option> 
    <option value="b">b</option> 
    <option value="c">c</option> 
</select> 
+0

私はこれがうまくいくとは思っていないので、これをコメントにしますが、 '$( '#theOptions2 option')。hasClass( '。className') .remove(); 'それを行う可能性があります。 – Town

+0

'#theOptions2'ドロップダウンのサンプルを提供できますか? c&aアイテムにはクラスがありますか? – Rob

+0

[jQueryを使用して選択リストのオプションを隠す]の可能な複製(http://stackoverflow.com/questions/1271503/hide-options-in-a-select-list-using-jquery) – epascarello

答えて

1
+0

+1アイデアが好きですOPはまだオプションが目に見えるほど好きではないかもしれませんが、無効にすることもできます。 – JAAulde

+0

さて、私は彼が実際にリストから項目を削除したかったことを示す.remove()を使用しようとしているのを見ました。私はちょうどこれがDOM要素を削除することよりもやや侵害的な考えであると思った(私が絶対に必要としない限りDOM要素を削除するのは好きではない)。 – sadmicrowave

+0

投票ありがとうございます! – sadmicrowave

1

私は、誰もが非表示を呼び出すようにしようと見たことがありません/ show onオプションの要素を前に、私はIEがあなたにそれをすることを許可しないと思います。選択はおそらくまあまあ一致していますが、IEは要素を隠していません。代わりにある記述の表示非表示を呼び出すためのと同じになり取り除くための選択...今後の参考のために

$('.className').remove(); 

または

$('option.className').remove(); 

または

$('#theSelect option.className').remove(); 
+0

これはうまくいくようですが、どのように追加しますか? $( 'className')。add();動作していないようです。 – MrM

+0

さて、あなたは逆順で作業しています... SELECTにオプションを追加するには、 '$( '

+0

私はあなたが私を失ったと思います... – MrM

0
$('select[class~="cactus"]') 
$('option[class~="cactus"]') 

javascript:(function(){  
    var out = "hi\n"; 
    out += $('*[class~="cactus"]').html2string() ; 
    alert(out); 
})() 

、言葉はhtml ...実際のHTMLを表示

0

このデモンストレーションコードは、オプションのフィルタリングを実現する方法の1つを示しています。デモの目的でハードコードされただけで、どの候補項目が削除されるかを判断するための変更が必要ですが、アイテムを削除する場合は、それらを追加し直した順序を考慮する必要があります。この問題を回避する最も簡単な方法は、元のリストのコピーを保持し、その後、元のリストを元に戻して残りのアイテムを削除するだけです。そうしないと、ソートデータを保持することを心配する必要があります。

だからここに定義ダウン私のドロップです:

<select id="mySelector"> 
    <option class="group1">Item 1</option> 
    <option class="group2">Item 2</option> 
    <option class="group1">Item 3</option> 
    <option class="group2">Item 4</option> 
    <option class="group1">Item 5</option> 
</select> 

<input type="button" id="removeItems" value="Remove candidate items" /> 
<input type="button" id="addItems" value="Add them back" /> 

やアイテムを復元/フィルタリングするjQueryの:

$(function() { 

    var originalOptionData; 

    $("#removeItems").bind('click', function() { 
     /* store original copy for rollback */ 
     originalOptionData = $("#mySelector option"); 
     $("#mySelector option.group2").remove(); 
    }); 

    $("#addItems").bind('click', function() { 
     var selector = $("#mySelector"); 
     selector.children().remove(); 
     selector.append(originalOptionData); 
    }); 
}); 

これは比較的簡単に私が思うプラグインを選択したフィルタのjQueryに変えることができ、しかし、私は遠くに行っていませんでした...

関連する問題