Javascript jquerychange和onchange之间的区别是什么?
我有以下HTML代码:Javascript jquerychange和onchange之间的区别是什么?,javascript,jquery,html,onchange,Javascript,Jquery,Html,Onchange,我有以下HTML代码: <select name="test123" id="test123" onchange="testOnchange()"> <option>Chocolate</option> <option>Candy</option> <option>Taffy</option> <option>Caramel</option> <option>
<select name="test123" id="test123" onchange="testOnchange()">
<option>Chocolate</option>
<option>Candy</option>
<option>Taffy</option>
<option>Caramel</option>
<option>Fudge</option>
<option>Cookie</option>
</select>
<script>
$( "#test123" ).change(function() {
console.log("change");
});
function testOnchange() {
console.log("onchange");
}
</script>
为什么testOnchange()
会触发,而jQuerychange
不会触发
change
和onchange
之间到底有什么区别?$(“#test123”)。val(“Candy”)
不会触发onchange
事件请参见
在设置
值后尝试调用.change()
以触发onchange
事件
巧克力
糖果
太妃糖
焦糖
软糖
曲奇
$(“#test123”)。更改(函数(){
控制台日志(“更改”);
});
函数testOnchange(){
console.log(“onchange”)
}
$(“#test123”).val(“糖果”).change()
这是因为在绑定更改
事件之前,没有确保在dom中加载
,请检查此项
并在将这些脚本包装到文档的onload
事件中时检查此项
此外,如果要以编程方式设置值,还需要以编程方式触发change()事件,请选中并
为什么testOnchange()会触发,而jQuery不会改变
这是因为onchange
是domapi中定义的事件,而.change
来自jQuery
的事件对象
因此,尽管当您使用jQuery code$(“#test123”).val(“Candy”)
应用更改事件时,它会在DOM中引发一个更改事件,因此只触发本机事件
如果您也想触发jQuery
的change
事件,那么您需要按照另一个答案的建议手动触发它<代码>$(“#test123”).val(“Candy”).change()
$(“#test123”).val(“Candy”)
不会触发onchange事件。我认为两者都是一样的。因为脚本在元素下面,所以元素在事件bindind发生之前可用,所以这不需要doc-ready包装,尽管拥有doc-ready包装是最佳做法。@Jai假设您参考的是guest271314的答案。在这种情况下,脚本的位置很重要,这本身可能并不理想。我看到了你的答案,这就是为什么我需要告诉你,如果你在文档结束时将代码放在下面,事实上你的答案没有清楚地回答问题,doc ready并不重要。@Jai“事实上你的答案没有清楚地回答问题”,是吗?事实上,我已经解释了为什么提问者的代码没有给出他/她期望的结果。“为什么testOnchage()会触发,而jquery change不会触发?”$(“#test123”).val(“Candy”)
如果值更改是这样做的。你的代码中是否有它。$(“#test123”).val(“Candy”)
这可能会导致更改事件,那么为什么要麻烦触发更改事件。@Jai“$(“#test123”).val(“Candy”)
这可能会导致更改事件,那么为什么要麻烦触发更改事件。“$(“#test123”).val(“Candy”)
不会触发onchange
事件请看,这就是我想说的,您应该在回答中添加它。您的意思是$(“#test123”)。val(“Candy”)
将触发onchange
事件并执行testOnchange
?
$("#test123").val("Candy");
$( document ).ready( function(){
$( "#test123" ).change(function () {
console.log("change");
});
});
function testOnchange(){
console.log("onchange")
}