如果jQuery中的语句,则多个else

时间:2011-12-15 01:33:05

标签: jquery

        $('#bar3').live('click', function() {
            if($('#bar3').attr('class') == '0') {
                console.log("closed")
            } else if($('#bar1' && '#bar2').attr('class') == '0') {
                console.log("Both")
            } else if($('#bar1').attr('class') == '0') {
                console.log("Summary Open")
            } else if($('#bar2').attr('class') == '0') {
                console.log("HIP Open")
            } else {
                console.log("open") 
            }
         });

为什么这不起作用?

我知道它在做什么,我只是不知道要改变什么来解决它。

这部分错了:

else if($('#bar1' && '#bar2').attr('class') == '0')

5 个答案:

答案 0 :(得分:5)

$('#bar1' && '#bar2').attr('class') == '0'

应该是

$('#bar1').attr('class') == "0" &&  $('#bar2').attr('class') == "0"

&安培;&安培;是一个有效的java脚本运算符,但作为jquery选择器的一部分无效。

答案 1 :(得分:3)

因为您只是使用了错误的语法。这样:

$('#bar1' && '#bar2').attr('class') == '0'

需要更像

$('#bar1').attr('class') == '0' && $('#bar2').attr('class') == '0'

但这仍然存在重大问题:

  • .attr('class') == '0'应该做什么?你有一个名为0的班级吗?如果是这样,正确的方法是.hasClass('0')
  • 您继续在jQuery对象中重新包装DOM元素。只做一次并存储结果,例如var $bar1 = $('#bar1'),然后一次又一次地使用$bar1

答案 2 :(得分:1)

  

它们实际上并不是硬编码的。我抓住了那个代码   属性检查员而不是我的HTML文件,抱歉那个!这堂课是   由TinyAccordion脚本动态添加 - 2011年12月15日亚历克斯2:19

您只需要在TinyAccordion中更改此代码:

var parentAccordion=new TINY.accordion.slider("parentAccordion");
parentAccordion.init("acc","h3",0,0);

到此:

var parentAccordion=new TINY.accordion.slider("parentAccordion");
parentAccordion.init("acc","h3",0,0,"your_class_name");

答案 3 :(得分:0)

您没有检查两个条件,您正在使用&&用两个字符串,并将结果传递给jQuery。你想这样做:

else if($('#bar1').attr('class') == '0' && $('#bar2').attr('class') == '0')

答案 4 :(得分:0)

尝试替换

} else if($('#bar1' && '#bar2').attr('class') == '0') {

使用:

} else if ( ($('#bar1').attr('class') == '0') && ($('#bar2').attr('class') == '0')) {

UPDATE:

我刚试过这段代码,正在研究jsfiddle:

$('#bar3').live('click', function() {
    if ($('#bar1').hasClass("0") && $('#bar2').hasClass("0")) {
        alert("Both bars are Open");
    } else if ($('#bar1').hasClass("0")) {
        alert("Bar 1 is Open");
    } else if ($('#bar2').hasClass("0")) {
        alert("Bar 2 is Open");
    } else {
        alert("No bars are open");
    }
});