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,注意得很好。=]