无法使用jQuery注册HTML select的更改事件处理程序

时间:2014-11-11 07:59:29

标签: javascript jquery html

我希望JavaScript函数在用户从菜单中选择项目时接收控件。这是我的实验代码(HTML的相关摘录):

<script>
$(function() {

    $(".myselect").on("change", "select", function() {
        console.log("TODO");
    });
});
</script>

<!-- ... -->

<form method="post" action="">
<select class="myselect">
<option value="A">A</option>
<option value="B">B</option>
</select>
</form>

谁知道这里有什么问题? (此时,永远不会调用事件处理程序。)

3 个答案:

答案 0 :(得分:2)

您正在使用委托处理程序,但主要和次要选择器是相同的元素,因此它不起作用。如果需要委托事件处理程序(因为在onload触发后将select元素添加到DOM),则需要将主选择器设置为静态父元素,如下所示:

$(document).on('change', '.myselect', function() {
    console.log('TODO');
});

否则,您可以使用标准事件处理程序:

$('.myselect').change(function() {
    console.log('TODO');
});

答案 1 :(得分:1)

Fiddle你可以试试这个。

$(".myselect").change( function() {
    alert("TODO");
});

Another Example

$(document).on("change", ".myselect", function() {
    alert("TODO");
});

答案 2 :(得分:1)

你也可以尝试这个:    如果你想得到这个值:

$('.myselect').on('change', function(){
    var value = this.value;
    alert(value);
});

http://jsfiddle.net/hxzonx82/1/