Javascript if语句忽略jQuery $(this)

时间:2016-05-17 21:50:49

标签: javascript jquery if-statement

我有一个像这样的代码,仅针对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是一个菜单按钮,li.contactIn是它的子节点,用于存储要显示的内容。 问题出在if语句中。我做错了什么?我试图编写代码,这将检查当前是否已下拉li。是我现在点击的那个。如果是,代码应该只是拉起来。如果没有,李。应该被拉下来。 在此先感谢:)

1 个答案:

答案 0 :(得分: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>
&#13;
&#13;
&#13;