Jquery 使用选项值添加“选定”属性

Jquery 使用选项值添加“选定”属性,jquery,local-storage,drop-down-menu,Jquery,Local Storage,Drop Down Menu,我有一个包含10个选项的选择框。每次选择一个选项时,它都会在localstorage中设置您使用id select1选择的值 例如:如果选择localstorage:Key:Emailclient-Value:Option1中的第一个选项 现在,Iom正在尝试生成localstorage的值,即选择表单中的选定属性 这是我尝试过的,但似乎不起作用: if (localStorage.getItem("Select1") == "Option1"){ $('#selectbox').va

我有一个包含10个选项的选择框。每次选择一个选项时,它都会在localstorage中设置您使用id select1选择的值

例如:如果选择localstorage:Key:Emailclient-Value:Option1中的第一个选项

现在,Iom正在尝试生成localstorage的值,即选择表单中的选定属性

这是我尝试过的,但似乎不起作用:

if (localStorage.getItem("Select1") == "Option1"){ 
    $('#selectbox').val("Option1").attr("selected");
}
我做错了什么

编辑:

这是我的代码:

<select id="selectbox" >
                        <option>Default</option>
                        <option>Option 1</option>
                        <option>Option 3</option>
                        <option>Option 3</option>
                        <option>Option 4</option>
                        <option>Option 5</option>
                        <option>Option 6</option>
        </select>

感谢进一步的评论,看起来您想要的是更全面的功能

试试这个:

if (localStorage.getItem("Select1") == "Option1"){ 
    $('#selectbox option:contains(Option1)').prop('selected',true); // jquery 1.6+
}
如果您使用的jQuery版本早于1.6,请将.prop替换为.attr

编辑:更动态的版本

if (localStorage.getItem("Select1")) {
  $('#selectbox option:contains(' + localStorage.getItem("Select1") + ')').prop('selected',true);
}

我想你可能在找这样的东西

它循环选择框的选项,并将其值与b的值进行比较。如果它们相等,则会更改选择框的索引,以便显示包含b值的选项

var b; //set equal to what you want to compare
$('#selectbox').find('option').each(function(i,e){
    console.log($(e).val());
    if($(e).val() == b){
        $('#selectbox').prop('selectedIndex',i);
    }
});

编辑:使用本地存储这是您所需要的全部:

$("#selectbox").val(localStorage.getItem("selectbox"));
我已经更新了以前的小提琴,例如:

编辑: 在您最初发布的代码中,假设您使用相同的选择框设置localStorage,您将比较选项1 no space和选项1 space。这种比较永远不会起作用,因此该选项永远不会被选中。

这种方法有效:

var optionValue  = localStorage.getItem("Select1")
$("#selectbox").val(optionValue)
.find("option[value=" + optionValue +"]").attr('selected', true);

这是不符合逻辑的工作,它没有。您正在将selectbox选项设置为selected of what?@Korvin您甚至不需要导航到所选选项。只需在select上调用.val即可获得相同的结果。@Tentonaxe他最初的问题是询问所选选项的值,而不是所选选项的内容,否则您就完全正确了。@jQuerybeast您的JSFIDLE将不会产生您想要的结果,因为您引用了错误的选择框0.0如果我试图从本地存储中检索,它将不起作用。这里有一个例子:谢谢你,先生。由于代码更少,我找到了更好的工作方式。按照您的方式,我需要输入尽可能多的选项的If语句。我的方式,只是3行代码。谢谢你的编辑:真的。我发现这是一个问题,但无论如何,我所有的选择都没有空间。我发现我的工作方式要好得多,因为我不需要像我的选项那样多次输入If语句,而只需要输入3行代码。谢谢,虽然对我有用,检查一下你的身份证。您选择了一个id为emailclient的select,而小提琴上唯一的select的id为selectboxFriend,您保存了y。
var optionValue  = localStorage.getItem("Select1")
$("#selectbox").val(optionValue)
.find("option[value=" + optionValue +"]").attr('selected', true);