Javascript 如何使用jQuery更改onChange事件的调用函数
我有这段代码,它可以在html的div标签中显示下拉列表。在本文中,我通过jquery为下拉列表设置了一个函数“hello()”,但问题是它没有调用该函数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"> $("
<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);