我有一个像这样的代码,仅针对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。是我现在点击的那个。如果是,代码应该只是拉起来。如果没有,李。应该被拉下来。 在此先感谢:)
答案 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;