jQuery - 删除选择选项:单击选中的属性

时间:2011-12-09 00:40:45

标签: jquery

我正在处理一个在模态对话框中弹出的多选项。当对话框关闭时,我会使用<ul>填充包含<li>选项中文本的:selected <li>。点击每个人<li>后,我希望:selected逐渐消失,相应的<option> <option>将被取消选中。除了取消选择$('.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'); }); }); });

之外,我一切正常

这是我的代码:

{{1}}

非常感谢任何帮助!

7 个答案:

答案 0 :(得分:6)

我相信你的问题就在这一行:

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

这就是说,找到所有选项:选择的是li.dropdown-option的后代。但是你会在淡出后删除这些,所以当然不会找到它。

所以你需要在上面的jQuery函数中更改第二个参数。 (this),到你想搜索的实际父dom元素。

我不知道您的HTML是什么样的,所以我无法为您提供更详细的解决方案。

答案 1 :(得分:2)

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

或单个选择框

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

但是再一次,你实际绑定了每个函数中的click函数,并且在你已经在同一个'this'范围内使用了remove()之后,试图在'this'范围内的选择框上删除一个选定的值?

答案 2 :(得分:2)

我遇到了同样的问题 我试过了

removeAttr('selected');

removeProp('selected');

prop('selected',false);

更改选择框值
$('#selectboxID').val(newVal);

...

但即使空值也存在所选属性 我终于做了以下删除它

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

答案 3 :(得分:1)

这对我有用,在需要操纵Ajax数据的情况下也可以使用

$('#id option:selected').removeAttr('selected');

答案 4 :(得分: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();
});

答案 5 :(得分:0)

你可以试试这个。希望这可以帮助你。

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

欢呼声。

答案 6 :(得分:0)

您可以尝试使用此选项选择器。

$('#selectselector > option[selected="selected"]').removeAttr('selected');