我正在尝试创建一个Multiselect列表,我可以通过单击列表中的第一个字段来清除所有选定的项目(这是一个空值,即“”)。
我正在使用这个jquery:
$("#States").change(function () {
var sValue = $(this).val();
if (sValue == "") {
$(" option:selected").removeAttr("selected");
}
return false;
});
问题是,这也取消了我所有其他多选列表框中的项目。如何定位特定列表? (可能是一个非常简单的问题,但这是我第一次涉足jquery)。
答案 0 :(得分:1)
您可以使用$(selector, context)
。
$("option:selected", this).prop("selected", false);
注意:多个select元素的val
方法返回的数组不是字符串,因此您要将数组与空字符串进行比较。
答案 1 :(得分:1)
您使用$(this)
而不是定位所有选定的选项:
$("option:selected", this).prop("selected", false);
答案 2 :(得分:1)
向选择器添加上下文。见下文,
$("option:selected", this).removeAttr("selected");
如果您使用的是最新版本的jQuery,请使用.prop
。有关详细信息,请参阅其他答案。
答案 3 :(得分:1)
您需要引用您正在使用的元素:
if (sValue == "") {
$('option:selected', this).removeAttr("selected");
}
答案 4 :(得分:0)
您可以通过扩展jQuery选择器来进一步定位它:
$("#States option:selected").removeAttr("selected");
答案 5 :(得分:0)
我认为以下代码可以使用。
$("#States").change(function () {
var sValue = $(this).val();
if (sValue == "") {
$(this).find("option:selected").removeAttr("selected");
}
return false;
});