jQuery If/Else If不工作

jQuery If/Else If不工作,jquery,if-statement,Jquery,If Statement,我有以下代码: $("#Editing").click(function(){ if ($(this).attr("class","OptionsOpt-On")) {$(this).attr("class","OptionsOpt-Off"); Edit = false;} else if ($(this).attr("class","OptionsOpt-Off")) {$(this).attr("class","OptionsOpt-On"); Edit =

我有以下代码:

$("#Editing").click(function(){
  if ($(this).attr("class","OptionsOpt-On")) 
    {$(this).attr("class","OptionsOpt-Off"); Edit = false;}

  else if ($(this).attr("class","OptionsOpt-Off")) 
    {$(this).attr("class","OptionsOpt-On"); Edit = true;}
});

我已经搜索过了,但没有找到类似的答案,因为我找到的所有答案都与我确定不在代码中的代码有问题。我不知道为什么else if不起作用,但如果我将其更改为if,它就可以正常工作…

也许您正在尝试这样做:

if ($(this).attr("class")=="OptionsOpt-On")

当与两个参数一起使用时,.attr函数用作setter,而与一个参数一起用作getter。

也许您正在尝试这样做:

if ($(this).attr("class")=="OptionsOpt-On")
当与两个参数一起使用时,.attr函数充当setter,而仅作为一个参数的getter。

with 2 arguments=setter=返回一个始终是真实值的jQuery对象

您应该将其用作和进行比较:

if ( $(this).attr("class") === 'OptionsOpt-On' ) {
//...
尽管在这种情况下可能更合适:

if ( $(this).hasClass('OptionsOpt-On') ) {
    //...
} else {
    //...
}
由于元素不能同时拥有两个类,因此在else中不需要第二个if

还假设元素以一个类开始,您可以使用该类切换两个类,而无需条件语句:

$("#Editing").click(function(){
    $(this).toggleClass('OptionsOpt-On OptionsOpt-Off');
    Edit = $(this).hasClass('OptionsOpt-On');
});
with 2 arguments=setter=返回一个jQuery对象,该对象始终是真实值

您应该将其用作和进行比较:

if ( $(this).attr("class") === 'OptionsOpt-On' ) {
//...
尽管在这种情况下可能更合适:

if ( $(this).hasClass('OptionsOpt-On') ) {
    //...
} else {
    //...
}
由于元素不能同时拥有两个类,因此在else中不需要第二个if

还假设元素以一个类开始,您可以使用该类切换两个类,而无需条件语句:

$("#Editing").click(function(){
    $(this).toggleClass('OptionsOpt-On OptionsOpt-Off');
    Edit = $(this).hasClass('OptionsOpt-On');
});

OP还应注意,在.click事件之前,目标元素必须至少有一个类被分配给它,否则if-else将不起作用,因为两个条件都不满足。@Terry Yes,注意得很好。=]OP还应注意,在.click事件之前,目标元素必须至少有一个类被分配给它,否则if-else将不起作用,因为两个条件都不满足。@Terry Yes,注意得很好。=]