在jquery中定位特定的多选列表

时间:2013-03-07 15:52:52

标签: jquery

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

我正在使用这个jquery:

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

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

6 个答案:

答案 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;       
});