2014-09-19 58 views
-3

我想显示不同的div,具体取决于我的3 跨度 elem包含的内容。 如果所有跨度 hasClass 上一条代码会显示一个DIV带班allUp。如果hasClass UP1然后它会显示一个DIV带班twoUp复杂的jQuery if语句包括运算符

我写了以下内容,但它当然不起作用。

var $line1 = $(".line1") 
var $line2 = $(".line2") 
var $line3 = $(".line3") 

if($line1.hasClass("up") || $line1.hasClass("up1") 
&& $line2.hasClass("up") || $line2.hasClass("up1") 
&& $line3.hasClass("up") || $line3.hasClass("up1")) { 
    $(".allUp").show(); 
} 
else if ($line1.hasClass("up") || $line1.hasClass("up1") 
&& $line2.hasClass("up") || $line2.hasClass("up1") 
&& $line3.hasClass("down") || $line3.hasClass("down1")) { 
    $(".twoUp").show(); 
} 
else if ($line1.hasClass("up") || $line1.hasClass("up1") 
&& $line2.hasClass("down") || $line2.hasClass("down1") 
&& $line3.hasClass("down") || $line3.hasClass("down1")) { 
    $(".oneUp").show(); 
} 
else { 
    $(".down").show(); 
} 

想我已经固定的语法错误

+2

'elseif'?在JavaScript中使用'else if'。 – 2014-09-19 10:52:49

+4

'$(“line1”)'这不是javascript中的有效变量名称 – 2014-09-19 10:53:17

+1

Make a jsfiddle plz! – 2014-09-19 10:53:44

回答

0

这应该工作,并收拾你的逻辑了不少。我还用第1,2和3行的班级名称更新了它。

var $lines = $('.line1, .line2, .line3'), 
    numUp = $lines.filter('.up, .up1').length, 
    classes = [ 'allDown', 'oneUp', 'twoUp', 'allUp' ]; 

$('.' + classes[numUp]).show(); 
+0

感谢你 - 很高兴有正确的布局和逻辑。但它仍然[不运行](http://codepen.io/anon/pen/Gqzgt) – user3246460 2014-09-19 11:04:27

+0

更新 - 我的逻辑是回到前面(检查3,2,1而不是1,2,3)。另外,这里有一个工作CodePen http://codepen.io/anon/pen/qcGpo – Joe 2014-09-19 11:06:19

+0

这个工程,但没有考虑到.down1和.down - 也给出了allDown,当line1是up和line3是 – user3246460 2014-09-19 11:10:34

0

var $('line') = linevar line = $('line')elseifelse if

+1

这只是为了初学者...选择器也是无效的:line1,line2和line3不是元素: )。 – 2014-09-19 10:56:41