0

所以我有一个选择框——有名称但没有 ID——Firefox 不允许我更改“selectedIndex”属性。

我试过了:

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

也试过:

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

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

并且选择框是动态生成的,所以我不能只在其中粘贴一个 ID。

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

4

4 回答 4

0

如果你知道这个值,你可以很容易地在 FF 中设置它:

<select>
    <option>First</option>
    <option>Second</option>
</select>

$('select').val('Second');

http://jsfiddle.net/qbtDj/

于 2013-06-19T18:28:00.587 回答
0

这很奇怪,但是在我们通常认为我们的首席开发人员的帮助下,发现当我们的小选择框格式化程序在使用时,进行更新的代码实际上是计算<div>s 和<li>s 以及放入的其他标签格式化盒子。解决方案是放入一行代码,强制只<select>计算元素,这就是问题的根源。现在一切正常。

但是,为什么它会锁定下拉菜单,我不知道!

于 2013-06-19T21:42:19.867 回答
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吗?

于 2013-06-19T18:14:31.913 回答
-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>
于 2013-06-19T18:26:20.090 回答