我正在处理一个在模态对话框中弹出的多选项。当对话框关闭时,我会使用<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}}
非常感谢任何帮助!
答案 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');