Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery更改onChange事件的调用函数_Javascript_Jquery_Onchange - Fatal编程技术网

Javascript 如何使用jQuery更改onChange事件的调用函数

Javascript 如何使用jQuery更改onChange事件的调用函数,javascript,jquery,onchange,Javascript,Jquery,Onchange,我有这段代码,它可以在html的div标签中显示下拉列表。在本文中,我通过jquery为下拉列表设置了一个函数“hello()”,但问题是它没有调用该函数 <body> <div id="content"></div> <script src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> $("

我有这段代码,它可以在html的div标签中显示下拉列表。在本文中,我通过jquery为下拉列表设置了一个函数“hello()”,但问题是它没有调用该函数

<body>
<div id="content"></div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">

    $("#content").append('<select id="sel" onchange="fly()"><option value="1">Choose Me</option></select>');
    $("#sel").attr("onchange", "hello()");
    alert($("#sel").attr("onchange"));

    function hello() {
        alert("Hello");
    }

    function fly() {
        alert("Go to fly");
    }
</script>
</body>

$(“#内容”).append('Choose Me');
$(“#sel”).attr(“onchange”,“hello()”);
警报($(“#sel”).attr(“onchange”);
函数hello(){
警惕(“你好”);
}
函数fly(){
警惕(“飞起来”);
}
编辑:


如果您在所有几乎相同的答案中都遗漏了它,您最初的问题是您将函数放在引号中
“hello()”
,而不仅仅是使用函数名来调用它(即
hello
)…

您只需要将其包装在jquery初始化中

$(function(){
    $("#content").append('<select id="sel" onchange="fly()"><option value="1">Choose Me</option></select>');
    $("#sel").attr("onchange", "hello()");
    alert($("#sel").attr("onchange"));

    function hello() {
        alert("Hello");
    }

    function fly() {
        alert("Go to fly");
    }
}); 
$(函数(){
$(“#内容”).append('Choose Me');
$(“#sel”).attr(“onchange”,“hello()”);
警报($(“#sel”).attr(“onchange”);
函数hello(){
警惕(“你好”);
}
函数fly(){
警惕(“飞起来”);
}
}); 
使用:

还将其包装在jquery init函数中,以确保其在DOM完全加载后运行:

$(function(){
   $("#content").append('<select id="sel" onchange="fly()"><option value="1">Choose Me</option></select>')
   $("#sel").change(function(){
      hello();
   });
});
$(函数(){
$(“#内容”).append('选择我')
$(“#sel”).change(函数(){
你好;
});
});

我建议您搬家:

$("#content").append('<select id="sel" onchange="fly()"><option value="1">Choose Me</option></select>'); 
$("#sel").attr("onchange", "hello()"); 
alert($("#sel").attr("onchange"));

这将允许加载页面,然后更改属性。

您正在使用jQuery。大多数事情都有捷径。应该是:

var hello = function() {
   alert("Hello");
}
$("#sel").change(hello);

它也应该在文档准备功能中。这样它就不会在元素存在之前尝试附加事件

$(document).ready(function() {
   // code here
});
你需要这个

$("#sel").change(hello);

我不能评论,但正如其他人所说。问题在于您使用的是
$(“#sel”).attr(“onchange”,“hello()”
而不是
$(“#sel”).attr(“onchange”,hello)

这是因为在JavaScript中,函数是一种数据类型。所以你必须和我一起工作

如果你想更好地理解这一点,我建议你学习函数式编程


除此之外,还应该使用jQuery方法添加事件侦听器。在本例中,
$(.#sel').change(hello)

这将执行hello函数,将返回值(未定义)传递给change()。
var hello = function() {
   alert("Hello");
}
$("#sel").change(hello);
$("#sel").change(function() {
 alert("Hello");
});
$(document).ready(function() {
   // code here
});
$("#sel").change(hello);