jQuery .change()返回当前值而不是更改后发生

时间:2011-06-20 19:17:37

标签: javascript jquery

$('#id').change(function () {
    if ( $('#id option:selected').val() == 'choice1') { 
                    // do stuff
                }
    else if ( $('#id option:selected').val() == 'choice2' ) {
                    // do different stuff
                }
});

所以这里发生的是当页面加载时默认选择choice1。当我将下拉菜单更改为choice2时,第一次没有任何反应。当我第二次将其更改回choice1时,它实际上从上一个选择中读取值(choice2)。所以这就像价值观落后一步,就像它在变化发生之前取得价值一样。

任何提示都将不胜感激!

非常感谢!

更新:非常感谢,但是在使用此网站的其他JS上必须有其他内容。之前我曾尝试过.val(),它的行为与选项完全相同:选中 - 有一个迭代延迟,所以它在第一个选择之后开始工作,但它落后于一个。我以前见过这个问题,但我真的不记得我是怎么修的。当我这样做时,我将不得不回答我自己的帖子。感谢大家的回复!

2 个答案:

答案 0 :(得分:3)

这可能有效

$('#id').change(function () {
    if ( $(this).val() == 'choice1') { 
                    // do stuff
                }
    else if ( $(this).val() == 'choice2' ) {
                    // do different stuff
                }
});

您的示例http://jsfiddle.net/MdGex/

答案 1 :(得分:0)

只需使用$(this).val();而不是$('#id option:selected').val()

选择框的val将是所选选项的val。