2011-12-09 28 views
2

私はモーダルダイアログでポップアップするマルチ選択に取り組んでいます。ダイアログが閉じると、オプションのテキストを含む<li><ul>が入力されます。 <li>がクリックされると、<li>が消えて、対応する:selected が選択されなくなります。 <option>の選択を解除する以外はすべて動作しています。すべてのヘルプは大歓迎ですjQuery - 選択オプションを削除:クリック時に選択した属性

$('.control-finished').click(function(){ 
      $('ul.multiselect-dropdown-options-'+name+'').empty(); 
      $('option:selected', select).each(function(index, value) { 
       var livalue = $(this).attr('value'); 
       $('ul.multiselect-dropdown-options-'+name+'').append('<li class="dropdown-option '+livalue+'">'+$(value).text()+'<!-- <a class="remove-option '+livalue+'"> -->x</li>'); 
       $('li.dropdown-option').click(function(){ 
        $(this).fadeOut(500, function() { $(this).remove(); }); 
        $('option:selected', this).removeAttr('selected'); 
       }); 
      });   

     }); 

は、ここに私のコードです!

+0

HTMLを投稿できますか? – Purag

+0

私はあなたが削除することはできませんと思う:選択状態..または可能ですが、項目はまだ選択ボックスで視覚的に選択されます。多分あなたは別のオプション(すなわち、最初のもの)を選択することができますか? –

+0

うわー、リストボックスを扱う奇妙なことがたくさんあります。要約すると、以下の私の投稿を見てください。 .prop( 'selected'、 '')を使うと、最適なオプションになります。 – rkw

答えて

5

私はあなたの問題は、このライン上にあると信じて:

$('option:selected', this).removeAttr('selected'); 

これは、すべてのオプションを見つけ、言っている:選択したことがli.dropdown-オプションの子孫です。しかし、あなたはフェードアウトの後でこれらを削除しているので、もちろんそれを見つけることはできません。

上記のjQuery関数の2番目のパラメータを変更する必要があります。 (これ)を、検索する実際の親DOM要素に置き換えます。

あなたのHTMLがどのようなものかわからないので、私はより詳細な解決法を提供することはできません。その後、

+0

助けてくれてありがとう! – Zumwalt

1
$('option:selected').attr('selected', ''); 

または単一選択ボックス

$('#selectboxID').attr('selected', '-1'); 

ためしかし、再び、あなたが実際にあなたの各関数の内部でクリック機能を結合し、「この」範囲内の選択ボックスで選択した値を削除しようとしています同じ 'this'スコープですでにremove()を使用した後は?

0

これを試してみてください:http://jsfiddle.net/rkw79/mmBKf/3/

$('select').change(function() { 
    $('ul').empty(); 

    $('option:selected').each(function() { 
     $('<li></li>').text($(this).val()).appendTo($('ul')); 
    }); 
}); 

$('ul').on('click', 'li', function() { 
    $('option[value="' + $(this).text() + '"]').prop('selected',''); 
    $(this).remove(); 
}); 
0

を私は...私は

$('#selectboxID').val(newVal); 

によって選択ボックスの値を変更

removeAttr('selected'); 

removeProp('selected'); 

prop('selected',false); 

を試みた同じ問題 を持っていた

それでも選択した属性も、私は最終的にあなたがこれを試すことができ

$('#selectboxID').html($('#selectboxID').html().replace('selected','')); 
0

それを削除するには、以下のなかった空の値 で存在します。これがあなたを助けることを望みます。

var $element = $("#DropDownList1"); 
    $element.change(function() { 
     $element.find('option').removeAttr('selected') 
     .filter("[value=" + this.value + "]") 
     .attr("selected", "selected"); 
     console.log(this.value); 
    }); 

歓声。