当没有触发事件侦听器时,我试图通过jquery将“this”设置为if语句中的选择器。目前我必须编写大量代码来实现我的行为,如下所示
function show(){
if($('input#q1Male').is(":checked")){
//do something...
} else {
//do something else...
}
if($('input#q1Female').is(":checked")){
//repeated do something...
} else {
//repeated do something else...
}
}show();
如果“this”可以在if语句中应用,那么是否会简化并清理javascript。我试着查看.call()和.apply()没有太多运气。
答案 0 :(得分:0)
您可以在调用函数设置其上下文之前使用jQuery.bind(=' this'),或者如您所说,在调用函数时使用apply / call。
apply / call将接受函数的上下文作为第一个参数,
例如:
show.apply(wantedContext, [arg1, arg2,...]);
或:
show.call(wantedContext, arg1, arg2,...);
在你的情况下,wantContext将是$('输入#q1Male'),所以你的函数将是:
function show(){
if(this.is(":checked")){
//do something...
} else {
//repeated do something else...
}
}
然后使用:
调用它show.call($('input#q1Male'));
和
show.call($('input#q1Female'));