2016-03-08 60 views
-1

我有20个div,每一个speficif类,所以我选择它,并检查是否是4'特殊'的1。Javascript多个语句在一个单一的,如果不工作

的主要问题是,下面的代码应该工作...

$('.cbp-ig-grid li, .cbp-ig-grid li a span object').on('click', function() { 
     /* Variables Definition */ 
     var item = $(this).find('span').attr('class').split(' ')[1] 
} 


    if((item != 'item1') || (item != 'item2') || (item != 'item3') || (item != 'item4')){ 


// Always enters here! 

}else{ 

    // Never enters here :( (I need to enter here for the 4 cases in the if statement) 

    } 

但是当我只是一个做...它的作品!

if(item != 'item1'){ 


// do stuff 

}else{ 

    // do other stuff 

    } 

我不知道我做错了,请帮忙将是有益的

+1

是的,它可能是,但它需要把它作为变量ble,而不是再次选择:/ –

+0

除此之外,你的Javascript看起来不是有效的。找到你的物品后,丢失一个''''并且移除''''。 – NiZa

+0

对不起,我会编辑帖子(除了真码以外,很快) –

回答

2

考虑您的if语句:

if((item != 'item1') || (item != 'item2') || (item != 'item3') || (item != 'item4')){ 

} 

那是什么要说的是,如果有任何的这些条件是真实的,if条件得到满足并且它将执行if块。

假设该项目是"item2"现在您的if语句的第一个表达式得到满足,因为它不是item1,因此该部分为真。因此它执行该块。 你想要的是:& &

if((item != 'item1') && (item != 'item2') && (item != 'item3') && (item != 'item4')){ 
    //when it's not the special case. 
} 
else 
{ 
    //the 4 special cases. 
} 
+2

是的,所以根据他的代码示例,这是正确的,否则就会发生这种情况。 “/ /永远不会进入:(:(我需要在这里输入4例在if语句)” – JanR

+0

是的,你是对的,我错过了,所以我删除了我的评论 – godzsa

2
if((item != 'item1') || (item != 'item2') || (item != 'item3') || (item != 'item4')){ 

没有机会进入人在这里...... item总是从一个或另一个不同。

2

.hasClass()是你最好的朋友。 https://api.jquery.com/hasclass/

$('.cbp-ig-grid li, .cbp-ig-grid li a span object').on('click', function() { 
    /* Variables Definition */ 
    var item = $(this).find('span'); 

    switch(true) { 
     case item.hasClass('item1'): 
      // item 1 
     break; 

     case item.hasClass('item2'): 
      // item 2 
     break; 

     case item.hasClass('item3'): 
      // item 3 
     break; 

     case item.hasClass('item4'): 
      // item 4 
     break; 

     default: 
      // other stuff 
    } 
}); 
1

让我们把它简单

if((item != 'item1') || (item != 'item2') || (item != 'item3') || (item != 'item4')) 

测试一下:

1:

item = 'item1': 
false || true || true || true 
that equals to true; because false || true = true 

2:

item = 'theGreatOldOnes' 
true || true || true || true - that equal to true 

两者都是真的!这意味着,你的表达是有缺陷的 - 它不会使“专班”和任何“非特殊类”之间的区别

为了使理解的差异“特殊”和“无特殊”你需要使用:

if((item != 'item1') && (item != 'item2') && (item != 'item3') && (item != 'item4')) 

或者

if((item === 'item1') || (item === 'item2') || (item === 'item3') || (item === 'item4')) 

你可以测试与“物品1”和“theGreatOldOnes”,以获得关于这些事情更好的抓地力^^

相关问题