我检查了jQuery文档,根据它我可以做类似的事情:
function notifyme(){
console.log(true)
}
$('button').on('click', notifyme );
哪个是对的。但我的代码似乎无法运作。
这是我的代码中的内容。我有一个id为myinput
的div,如此:
<div id="myinput">
<input type="checkbox" value="0"/>
</div>
这是我的jQuery代码:
$('#myinput input').on(
'change',
My_fn( $(this).prop('checked') )
);
My_fn( theVal ){
if( theVal == true ){
console.log(true)
}
else{
console.log(false)
}
}
即使我尝试:
$('#myinput input').on(
'click',
My_fn( $(this).prop('checked') )
);
我没有控制台日志。
有趣的是,如果我将此代码放在脚本的开头:
My_fn( $('#myinput input').prop('checked') )
我选中了true
的控制台日志,因为选中了复选框。
为什么click
或change
事件都没有触发My_fn()
功能?
答案 我知道了。
首先,我在使用时删除了该函数的参数。所以这
My_fn( $(this).prop('checked') )
成为此My_fn()
。现在使用.on()
时。我只是写了
$('#myinput input').on(
'click',
My_fn
);
它有效。感谢任何帮助过的人。
答案 0 :(得分:2)
尝试以下代码。将$(this).prop(&#39; checked&#39;)作为函数中的参数传递是错误的。
$('#myinput input').on(
'click',
My_fn
);
My_fn(){
if( $(this).prop('checked')== true ){
console.log(true)
}
else{
console.log(false)
}
}
或者您可以使用is()选择器来检查天气复选框是否已选中
My_fn(){
if( $(this).is(':checked') == true ){
console.log(true)
}
else{
console.log(false)
}
}
答案 1 :(得分:1)
首先声明函数。
当您执行.on()
时,您已经将输入元素的引用发送到事件处理程序(My_fn),因此您不必将参数发送到函数。而是在函数处理程序中尝试获取元素的属性。
尝试这样的事情
function My_fn(theVal){
if( $(this).is(':checked') === true ){
console.log(true)
}else{
console.log(false)
}
}
$('#myinput input').on('change', My_fn);