Javascript jquerychange和onchange之间的区别是什么?

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>

我有以下HTML代码:

<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()
会触发,而jQuery
change
不会触发

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")
}