Javascript 设置选定元素的选定值
我有两个选择列表:Javascript 设置选定元素的选定值,javascript,jquery,html,Javascript,Jquery,Html,我有两个选择列表: <select id="one" class="sel"> <option id="1">1</option> <option id="2">2</option> <option id="3">3</option> </select> <select id="two" class="sel"> <option id="1">
<select id="one" class="sel">
<option id="1">1</option>
<option id="2">2</option>
<option id="3">3</option>
</select>
<select id="two" class="sel">
<option id="1">1</option>
<option id="2">2</option>
<option id="3">3</option>
</select>
现场直播:
顺便说一句,我想在选项中的ID,而不是值的例子。谢谢。在
选项
s中将id
更改为值
,然后:
$("#three").click(function(){
$(".sel").val(3);
});
还可以查看您的更新
您可以使用属性选择器
$("#three").click(function(){
$(".sel").find('[id=3]').attr('selected', 'selected');
});
工作使用该功能
$("#three").click(function(){
$(".sel").val("3");
})
所有认为您需要在
选项上设置值的人:您不需要。看看jQuery核心:
option: {
get: function( elem ) {
var val = elem.attributes.value;
return !val || val.specified ? elem.value : elem.text;
}
},
如果没有值属性,则使用选项
的文本。因此,调用val(3)
将搜索文本值为“3”的选项,并选择适当的元素。ID不是唯一的与此无关
小提琴手:只是为了好玩才做这件事的。。在这里查看我的
听着,我们知道你也有value
属性,但你真的不应该滥用id
——而是使用data xxx
元素。你不能有多个相同id的元素。你在同一html中有重复的id。它将起作用,getElementById将返回匹配ID的数组,但ID应该是唯一的。页面上不能有多个ID相同的元素。这将不会检查OP所需的属性ID=3。此解决方案将不起作用。OP没有为选项元素使用值
属性。想修改你的答案吗?@ShankarSangoli,你甚至不需要将id
更改为value
。您基本上将select元素的值设置为3。这就是为什么你认为它是有效的。@primatology:id必须以字母开头,而不是数字。OP不打算使用值,所以我认为这不会解决问题。这是有效的,但你应该提到id必须是唯一的。@TonioElGringo-你是对的,id应该在页面上是唯一的。因为我们限制了范围来找到这个答案中的元素。是的,这就是它工作的原因,但这并不意味着它是最好的方法。使用Alnitak提到的相同代码并用数据xxx替换id会更好,效果也会更好。没有我提到的地方,这是最好的方法。此答案根据OP的标记,如果需要,OP可以更改属性名称并相应地使用它。重点是如何使用jQuery
api来查找具有匹配属性值的所需元素。你的否决票完全没有意义。
$("#three").click(function(){
$(".sel").find('[id=3]').attr('selected', 'selected');
});
$("#three").click(function(){
$(".sel").val("3");
})
option: {
get: function( elem ) {
var val = elem.attributes.value;
return !val || val.specified ? elem.value : elem.text;
}
},
var txt2Num = ['zero', 'one', 'two', 'three', 'four', 'five','six', 'seven', 'eight', 'nine'];
$("#three").click(function(){
var textNum = $.trim($(this).text()).replace('set ', '');
var selectedIndex = $.inArray(textNum, txt2Num);
$(".sel").each (function (index) {
this.selectedIndex = selectedIndex - 1;
});
});