jQuery没有响应选择/选项更改事件。

5

请问有人能告诉我错误在哪里吗?我就是看不出来。 当选择改变时,应该将“e1已更改”记录到控制台。

HTML:

<select name="e1" id="e1">
    <option value="1">1</option>
    <option value="2">2</option>
</select>

js:

$('#e1').change(function() {
    console.log('e1 has changed');
});

Jquery肯定有效,因为我已经成功地从服务器获取了其他元素的数据。

代码看起来正确。你能详细说明哪里出了问题,或者给出一个使用案例,说明这段代码不起作用吗? - Tejs
代码是正确的,问题不在那里。你能进一步解释吗? - Flater
1
你的代码能够工作(在这里将 console.log 更改为 alert 以使生活更轻松)。http://jsfiddle.net/NJskv/ - ridecar2
5个回答

10
这段代码。
$('#e1').change(function() {
    console.log('e1 has changed');
});

你的代码可能没有在文档就绪处理程序中,因此在你的 DOM 元素 e1 准备好之前就运行了。你可以创建一个文档就绪处理程序,在 DOM 元素准备好时运行,像这样:

$(function() {
    $('#e1').change(function() {
        console.log('e1 has changed');
    });    
});

1

对我来说可以。这是jsFiddle代码 -

http://jsfiddle.net/CC5P6/

$(document).ready(function() {
  $('#e1').change(function() {
    alert('e1 has changed');
  });
});

1
如果你还没有这样做,你应该在代码中加入 $(document).ready(
 $(document).ready(function() {
    $('#e1').change(function() {
       console.log('e1 has changed');
    });
 });

0

这对我很有效:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
    $(function() {
        $('#e1').change(function() {
            console.log('e1 has changed');
        });
    });
</script>

</head>
<body>
<select name="e1" id="e1">
    <option value="1">1</option>
    <option value="2">2</option>
</select>
</body>
</html>

document.ready是关键,正如其他人所指出的那样。


0

对于选择菜单,当通过键盘和鼠标事件选择选项时,更改事件会发生,并且NoScript有效地干扰了它。 对于文本字段或文本区域,当字段失去焦点时,更改事件会发生。 因此,您不能直接使用“更改事件”(而不选择任何选项通过键盘或鼠标)。 尝试这段代码:

<select name="subpos" id="subpos">
<option value="examplel">examplel</option>
<option value="sample">sample</option>
<option value="fortest">fortest</option>
</select>


<script>
    $(function() {
        $('#subpos').change(function() {
            console.log('subpos has changed');
        }); 
        $("#subpos").val('sample');//combo box has change but dont appear in console log. why?
   });
</script>

运行后,请查看控制台日志。在控制台日志中,您无法看到“subpos has changed”,但在操作中,“subpos has changed”发生了什么?当选择更改时,应将其记录在控制台中。现在通过从下拉菜单中选择该选项,您可以看到控制台日志已更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接