所以我有一个选择框 - 它有一个名字但没有ID - 而且Firefox不允许我更改'selectedIndex'属性。
我试过了:
$('select[name=foo]').prop('selectedIndex',1)
也尝试过:
$('select[name=foo]').get(0).selectedIndex=1
基本上,我可以找到与selectedIndex相关的任何内容......但它拒绝改变。它保持在0。在我的代码中尝试过,在控制台中尝试了它...它保持为0.但它适用于所有其他浏览器。
选择框是动态生成的,所以我不能只在那里贴一个ID。
但奇怪的是,val()和text()属性确实反映了实际选择的选项,但selectedIndex没有改变,所以我试图强制它改变。
答案 0 :(得分:0)
我不知道为什么它不起作用,但你可以这样做,这应该有效:
$('select').find('option').first().next().prop('selected','selected');
获得第n项:
index = 1;
$('select').find('option:nth-child(' + (index+1) + ')').prop('selected','selected');
其中index是selectedIndex
你确定这对firefox不起作用吗?刚试过它(ubuntu上的firefox 21) - http://jsfiddle.net/Wmv6q/
也许您的页面上有其他内容正在重置它?如果没有,你能说出你所使用的firefox版本吗?
答案 1 :(得分:0)
如果你知道这个值,你可以很容易地在FF中设置它:
<select>
<option>First</option>
<option>Second</option>
</select>
$('select').val('Second');
答案 2 :(得分:0)
这非常奇怪,但在我们通常认为我们的首席开发人员的帮助下,发现当我们的小选择框格式化程序正在使用时,执行更新的代码实际上是在计算<div>
s和<li>
和其他标签放入格式化框。解决方案是放入一行代码,强制只计算<select>
个元素,这就是问题的根源。现在一切都有效。
为什么它会锁定下拉菜单,但我不知道!
答案 3 :(得分:-2)
这适用于Mac OS X 10.8.4上的Firefox 17.0.1,它也适用于您的平台吗?如果确实如此,问题确实会对另一个图书馆造成一些干扰。
<!DOCTYPE html>
<html>
<head>
<script src="jquery-1.10.1.min.js"></script>
<script>
function test () {
$('select[name=foo]').prop('selectedIndex', 1);
}
</script>
</head>
<body>
<form>
Should display 'one' after button click:
<select name="foo">
<option>zero</option>
<option>one</option>
<option>two</option>
<option>three</option>
</select>
</form>
<button type="button" onclick="test()">set index to 1</button>
</body>
</html>