Javascript $(“选择器”)。单击vs.onchange
正如一些人指出的那样,我将onchange和onclick混合在一起 我昨天发布了,有人友好地回答了我的问题,但我不太明白为什么$selector.click methon有效,但onchange=。。。没有 所以,如果我有HTML,在父元素DataTable cloumn标头中,任何单击标头都会触发DataTable排序例程:Javascript $(“选择器”)。单击vs.onchange,javascript,jquery,Javascript,Jquery,正如一些人指出的那样,我将onchange和onclick混合在一起 我昨天发布了,有人友好地回答了我的问题,但我不太明白为什么$selector.click methon有效,但onchange=。。。没有 所以,如果我有HTML,在父元素DataTable cloumn标头中,任何单击标头都会触发DataTable排序例程: <div> <input type="checkbox" id="select_all" onchange="SelectAll(event)
<div>
<input type="checkbox" id="select_all" onchange="SelectAll(event)">
SELECT ALL
</div>
//只有在父元素中的排序例程被激发后,才会命中它。
函数SelectAllevent{
事件。停止传播;
var-box=document.queryselectoral[name*=\include\uu \];//所有前缀为include的复选框。
var chk=document.getElementById'select_all'。选中;
对于变量i=0;i还要注意,jQuery逻辑使用的是单击事件处理程序,而不是更改。您应该将.click更改为.change,以便事件处理程序仍然适用于通过键盘浏览web的用户。onChange事件通常在元素失去焦点时触发,因此将首先触发click事件。如果要使用jQuery,请使用它。你为什么要把旧式的onxxxx属性和这个混为一谈 您的代码非常简单。只需这样做:
<div>
<input type="checkbox" id="select_all">
SELECT ALL
</div>
function SelectAll( event ) {
event.stopPropagation();
var chk = $('#select_all')[0].checked;
$("[name*=\"include_\"]").each( i, element ) {
if( ! element.disabled ) {
element.checked = chk;
}
}
}
$("#select_all").click( SelectAll );
您使用的是onChange事件,而不是onclick。在某些浏览器中,onchange仅在元素失去焦点时触发,因此onclick将首先触发。更改事件在文本输入模糊时触发。对于复选框,它立即被提出。我接受你的观点。通过C/C++编程,我发现jquery的语法比原生JS更不容易一目了然地解释。如果我的代码中有jquery,它通常是由其他人提供的。但我确实打算转换,我保证。如果有帮助的话,有一件事需要记住,jQuery是原生JavaScript。毕竟,jQuery只是一个JavaScript库。它没有在JavaScript语言中引入任何尚不存在的语法:根据定义,每一行jQuery代码都是一行JavaScript代码。它不是使用预处理器来证明自己的语法。您只需调用jQuery库提供的函数,调用方式与在任何其他库或您自己的代码中调用函数的方式相同。