当没有事件侦听器触发时,将 "this" 设置为 if 语句内的选择器
Set "this" to an selector inside if statement when no event listeners triggered
我试图在没有事件侦听器触发时通过 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();
如果可以在 if 语句中应用 "this",那么 if 将简化和清理 javascript。我试过调查 .call() 和 .apply() 但运气不佳。
你可以在调用函数之前使用jQuery.bind来设置它的上下文(='this'),或者如你所说,在调用函数时使用apply/call。
apply/call 将接受函数上下文作为第一个参数,
例如:
show.apply(wantedContext, [arg1, arg2,...]);
或:
show.call(wantedContext, arg1, arg2,...);
在您的情况下 wantedContext 将为 $('input#q1Male'),因此您的函数将为 :
function show(){
if(this.is(":checked")){
//do something...
} else {
//repeated do something else...
}
}
然后使用 :
调用它
show.call($('input#q1Male'));
和
show.call($('input#q1Female'));
我试图在没有事件侦听器触发时通过 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();
如果可以在 if 语句中应用 "this",那么 if 将简化和清理 javascript。我试过调查 .call() 和 .apply() 但运气不佳。
你可以在调用函数之前使用jQuery.bind来设置它的上下文(='this'),或者如你所说,在调用函数时使用apply/call。
apply/call 将接受函数上下文作为第一个参数,
例如:
show.apply(wantedContext, [arg1, arg2,...]);
或:
show.call(wantedContext, arg1, arg2,...);
在您的情况下 wantedContext 将为 $('input#q1Male'),因此您的函数将为 :
function show(){
if(this.is(":checked")){
//do something...
} else {
//repeated do something else...
}
}
然后使用 :
调用它show.call($('input#q1Male'));
和
show.call($('input#q1Female'));