0

我正在尝试创建一个多选列表,我可以通过单击列表中的第一个字段来清除所有选定的项目(这是一个空值,即“”)。

我正在使用这个 jquery:

    $("#States").change(function () {
    var sValue = $(this).val();
    if (sValue == "") {
        $(" option:selected").removeAttr("selected");
    }
    return false;       
});

问题是这也会取消选择我所有其他多选列表框中的项目。如何定位特定列表?(可能是一个非常简单的问题,但这是我第一次涉足 jquery)。

4

6 回答 6

1

您可以使用$(selector, context).

$("option:selected", this).prop("selected", false);

注意val多个选择元素的方法返回一个数组而不是字符串,因此您将数组与空字符串进行比较。

于 2013-03-07T15:54:49.777 回答
1

您使用$(this)而不是针对所有选定的选项:

$("option:selected", this).prop("selected", false);
于 2013-03-07T15:54:50.143 回答
1

将上下文添加到选择器。见下文,

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

.prop如果您使用的是最新版本的 jQuery,请使用。有关更多信息,请参阅其他答案。

于 2013-03-07T15:54:52.227 回答
1

您需要引用您正在使用的元素:

if (sValue == "") {
    $('option:selected', this).removeAttr("selected");
}
于 2013-03-07T15:54:57.940 回答
0

您可以通过扩展 jQuery 选择器来定位它:

$("#States option:selected").removeAttr("selected");
于 2013-03-07T15:54:20.110 回答
0

我认为下面的代码会起作用。

$("#States").change(function () {
    var sValue = $(this).val();
    if (sValue == "") {
        $(this).find("option:selected").removeAttr("selected");
    }
    return false;       
});
于 2013-03-07T15:56:12.193 回答