为什么click或change事件都没有触发我的功能?

时间:2015-03-15 02:38:19

标签: javascript jquery html if-statement

我检查了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的控制台日志,因为选中了复选框。

为什么clickchange事件都没有触发My_fn()功能?

答案 我知道了。

首先,我在使用时删除了该函数的参数。所以这 My_fn( $(this).prop('checked') )成为此My_fn()。现在使用.on()时。我只是写了

$('#myinput input').on( 
    'click', 
    My_fn
);

它有效。感谢任何帮助过的人。

2 个答案:

答案 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);