$('#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')
答案 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')
。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')) {
我刚试过这段代码,正在研究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");
}
});