0

我在 windows 8 pro 上使用版本 27.0.1453.110 m 的 chrome。我有一个简单的 SELECT 元素和一个 .change() 函数。当所选项目更改时,应调用此函数。在 IE 和 FireFox 以及旧版本的 chrome 上效果很好,但在最新版本的 chrome 中它坏了。当我直接单击向上/向下箭头或向上/向下翻页滚动条而不先单击选项时,会触发 change() 。但是,一旦我单击一个选项,此行为就会消失并且工作正常。任何想法如何解决这个问题?难道我做错了什么?

http://jsfiddle.net/TH8wk/16/

 <form method="POST" action="">
<select id="a100" size="3">
    <option value="1">1</option>
    <option selected="selected" value="4">4</option>
    <option value="21">21</option>
    <option value="211">211</option>
    <option value="2344">2344</option>
    <option value="2qwr">2qwr</option>
</select>
    </form>


    $(document).ready(function () {
        $('#a100').change(function () {
            alert('change');
        });
    });
4

1 回答 1

0

现在我明白你在说什么了。Chrome 也在对我做同样的事情。它并不漂亮,但如果你保存旧值,一个简单的 if 语句就可以解决问题。见http://jsfiddle.net/jG275/2/

    var oldVal;
    $(document).ready(function () {
        oldVal = $('#a100').val();
        $('#a100').change(function () {  
            if ($(this).val() != oldVal) {
                alert('change() called...new value: ' + $(this).val());
                oldVal = $(this).val();
            }
        });
    });

但是,这似乎没有必要。但至少它解决了这个问题。

于 2013-06-16T03:42:20.123 回答