2016-05-17 124 views
2

我有这样的代码,只是为了与if语句的问题写成:

$("ul.pick").click(function(){ 
     var kid = $(this).find("li.contactIn"); 
     kid.addClass("current"); 
     var parent = kid.parent(); 
     if(parent == $(this)) 
      { 
      parent.addClass("something"); 
      } 
    }); 

所以ul.pick是菜单按钮,李。 contactIn是其存储要显示的内容的子项。 问题在if语句中。我做错了什么?我试图编写代码,它会检查当前是否拉下了内存。是我现在点击的那个。如果是这样,代码应该把它拉起来。如果没有,李。应该被拉下来。 在此先感谢:)

+3

您比较引用一个羽翼丰满的演示。由于$(this)是一个全新的jQuery对象,它们永远不会匹配。若要更正它使用.is()函数:http://api.jquery.com/is/ – nurdyguy

回答

3

问题是使用$(this)调用jQuery构造函数并创建一个jQuery对象。在JavaScript中,将对象相互比较始终是错误的。你需要比较实际的元素。

下面是该点击添加类

$("ul.pick").click(function(){ 
 
    var kid = $(this).find("li.contactIn"); 
 
    kid.addClass("current"); 
 
    var parent = kid.parent(); 
 
    if(parent[0] == this) //compare elements 
 
    { 
 
     parent.addClass("something"); 
 
    } 
 
});
.something { color: red; } 
 
.current { border: 1px solid red; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<ul class="pick"> 
 
    <li class="contactIn">contactIn</li> 
 
</ul>

+0

[0]是什么意思?它似乎没有工作 –

+0

@JakubMałojło - '[0]'访问由jQuery对象持有的基本本地元素。什么不行? –

+0

它只是不添加类到单击的元素 –