Jquery 使用选项值添加“选定”属性
我有一个包含10个选项的选择框。每次选择一个选项时,它都会在localstorage中设置您使用id select1选择的值 例如:如果选择localstorage:Key:Emailclient-Value:Option1中的第一个选项 现在,Iom正在尝试生成localstorage的值,即选择表单中的选定属性 这是我尝试过的,但似乎不起作用: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
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);