我试图通过Jquery过滤包含li
标记的ul
标记。 Jquery .has("tag")
过滤器显示没有元素的标签有它们。
$(".mobile_menu>ul>li").click(function(event) {
/* Act on the event */
console.log("clicked");
if($(this).has(".ul")){
console.log("it has ul");
console.log($(this));
}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mobile_menu">
<div class="title">Title</div>
<ul>
<li>1</li>
<li>2
<ul class="none">
<li>1</li>
<li>2</li>
</ul>
</li>
<li>3</li>
</ul>
</div>
&#13;
答案 0 :(得分:2)
你几乎得到它,使用$(this).has("ul").length > 0
首先从.has(".ul")
移除点,因为ul
不是class
。
<- credit to T.J.Crowder ->
您甚至可以缩短它并使用$(this).has("ul").length
has
&#34; 返回一个jQuery对象,而不是一个标志。 jQuery对象总是很简洁。&#34;
$(".mobile_menu>ul>li").click(function(event) {
/* Act on the event */
console.log("clicked");
if ($(this).has("ul").length > 0) {
console.log("it has ul");
console.log($(this));
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mobile_menu">
<div class="title">Title</div>
<ul>
<li>1</li>
<li>2
<ul class="none">
<li>1</li>
<li>2</li>
</ul>
</li>
<li>3</li>
</ul>
</div>
&#13;
答案 1 :(得分:1)
您可以使用find
和length
来检查当前li
是否有ul
:
$(".mobile_menu>ul>li").click(function(event) {
/* Act on the event */
console.log("clicked");
if ($(this).find("ul.none").length) {
console.log("it has ul");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mobile_menu">
<div class="title">Title</div>
<ul>
<li>1</li>
<li>2
<ul class="none">
<li>1</li>
<li>2</li>
</ul>
</li>
<li>3</li>
</ul>
</div>