首页新闻招聘找找看知识库

js on绑定事件 问题?

-1
[待解决问题]

 $("#SpecialAptitude").on("change", function () { CheckType($(this)) } ) $("#SpecialAptitude").on("change", CheckType($(this)) ) 为什么第一个有效果 第二个没效果    请问下有什么区别吗?

~雨落忧伤~的主页 ~雨落忧伤~ | 菜鸟二级 | 园豆:212
提问于:2017-12-07 10:59
< >
分享
所有回答(3)
0

因为语法是:

$("#id").on("事件名称",function(){//TODO});

而不是:

$("#id").on("事件名称",//TODO);

七芯海棠 | 园豆:1545 (小虾三级) | 2017-12-07 11:11

$("#id").on("事件名称",function(){//TODO});          

function(){//TODO} 不是相当于一个匿名方法吗?  在里面写语句

我调用自己写的方法 为什么还要加 function(){}   呀

支持(0) 反对(0) ~雨落忧伤~ | 园豆:212 (菜鸟二级) | 2017-12-07 11:15

@~雨落忧伤~: 是啊,function(){//TODO} 是个匿名函数,但是你的CheckType不是匿名函数吖

支持(0) 反对(0) 七芯海棠 | 园豆:1545 (小虾三级) | 2017-12-07 11:19

@七芯海棠:  不是第二个参数是调用的方法吗? 如果是匿名方法就是 function(){//TODO} 

方法就写方法吗?

支持(0) 反对(0) ~雨落忧伤~ | 园豆:212 (菜鸟二级) | 2017-12-07 11:29

@~雨落忧伤~: 

$("#id").on("事件名称",匿名函数);

貌似得这么用哈,匿名函数里去调用你要进行的方法(CheckType),当然如果你发现可以$("#id").on("事件名称",非匿名函数);这么用的话,希望能告知一声,我也好学习学习 

支持(0) 反对(0) 七芯海棠 | 园豆:1545 (小虾三级) | 2017-12-07 11:38

@七芯海棠: 0.0!

支持(0) 反对(0) ~雨落忧伤~ | 园豆:212 (菜鸟二级) | 2017-12-07 11:39
0

CheckType($(this)) 是执行这个函数得到的返回值,你这里应该给事件处理程序传一个函数

$("#SpecialAptitude").on("change", CheckType)

这个时候 CheckType 函数的第一个参数是事件对象,所以你得改一改这个函数的主体

by.Genesis | 园豆:948 (小虾三级) | 2017-12-07 13:49

function CheckType(obj) {
var optionVal = $(obj).find("option:selected").val();
if (optionVal == 1) {
$("#ProgramDiv").css('display', 'block');
}
else {
$("#ProgramDiv").css('display', 'none');
}
}

 

函数是这样的  

如果  $("#SpecialAptitude").on("change", CheckType) 这样调用可以嘛? 参数呢?

支持(0) 反对(0) ~雨落忧伤~ | 园豆:212 (菜鸟二级) | 2017-12-07 15:21

function CheckType(e) {

  $(this) 可以直接在这里获取 this 就是当前元素

}

支持(0) 反对(0) by.Genesis | 园豆:948 (小虾三级) | 2017-12-07 17:56

@by.Genesis:                     

function CheckType(e) {

  $(this) 可以直接在这里获取 this 就是当前元素

}

函数的 参数 e

这样调   $("#SpecialAptitude").on("change", CheckType)        默认就是  $("#SpecialAptitude") 吗?

支持(0) 反对(0) ~雨落忧伤~ | 园豆:212 (菜鸟二级) | 2017-12-07 18:00

@~雨落忧伤~: e 是事件对象 this 才是触发事件处理程序的 dom 元素

支持(0) 反对(0) by.Genesis | 园豆:948 (小虾三级) | 2017-12-07 18:07

@by.Genesis: 那个不是方法的参数吗 传入一个参数

支持(0) 反对(0) ~雨落忧伤~ | 园豆:212 (菜鸟二级) | 2017-12-07 18:08

@~雨落忧伤~: 你 console.log 出来体会体会

支持(0) 反对(0) by.Genesis | 园豆:948 (小虾三级) | 2017-12-07 18:21
0

绑定事件的方法:

$(标签).事件(函数内容)
$(标签).bind("事件",函数名)
$(标签).on("事件",函数名)
0bug | 园豆:137 (初学一级) | 2017-12-08 11:07
   您需要登录以后才能回答,未注册用户请先注册