使用'。'对DOM元素进行Jquery操作在ID中没有任何效果

时间:2011-11-06 23:02:14

标签: javascript jquery

e.g。这里有“实时”版本:http://jsfiddle.net/Ltmbd/5/

<html>
     <body>
         <select id="some.list" >
            <option value="1" >AAA</option>
            <option value="2" >BBB</option>
        </select>
    </body>
</html>

和相应的javascript / jquery:

$(function()
{
    $("select").each(function()
    {
        $(this).val("2");
    });
});

这应该在选择列表中选择“BBB”(如果你从ID“some.list”中删除'。',它会按预期工作)。请注意,jquery FAQ提到了一个相关但略有不同的问题。

显而易见的答案是“不要在你的ID中添加。”但是我使用的是脚手架(生成的)grails视图,因此违反此约定将会有很多工作。

使用Jquery 1.4.4

4 个答案:

答案 0 :(得分:4)

这是解决问题的另一种选择。希望这会有所帮助。

$(function() {
    $("select").each(function() {
        $(this).attr('selectedIndex', 1);
    });
});

谢谢。

答案 1 :(得分:2)

1.4.4以上的jQuery版本可以解决这个问题。 考虑更新你的jQuery版本,你的问题应该解决了,谢谢。

以下是报告的原始错误,案例是1.5版本已解决。

http://bugs.jquery.com/ticket/8021

答案 2 :(得分:2)

如果由于某种原因必须坚持使用jQuery 1.4.4,请使用selectedIndex更改选项值。它的工作原理,即使ID中有一个点。

this.selectedIndex = 1; //Select the second <option>

小提琴:http://jsfiddle.net/Ltmbd/6/

或者,您可以使用:

this.selectedIndex = $(this).find('option[value=2]').index();

小提琴:http://jsfiddle.net/Ltmbd/10/

答案 3 :(得分:0)

尽管我认为我做得对,但我花了太多时间在这上面。 原来1.4.4版似乎有一个与此相关的bug。我回到了1.3.2以及任何一个新的,这都有效。