无法在Firefox中设置prop('selectedIndex')

时间:2013-06-19 18:11:10

标签: javascript jquery firefox selectedindex

所以我有一个选择框 - 它有一个名字但没有ID - 而且Firefox不允许我更改'selectedIndex'属性。

我试过了:

$('select[name=foo]').prop('selectedIndex',1)

也尝试过:

$('select[name=foo]').get(0).selectedIndex=1

基本上,我可以找到与selectedIndex相关的任何内容......但它拒绝改变。它保持在0。在我的代码中尝试过,在控制台中尝试了它...它保持为0.但它适用于所有其他浏览器。

选择框是动态生成的,所以我不能只在那里贴一个ID。

但奇怪的是,val()和text()属性确实反映了实际选择的选项,但selectedIndex没有改变,所以我试图强制它改变。

4 个答案:

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

http://jsfiddle.net/qbtDj/

答案 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>