当没有事件侦听器触发时,将 "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'));