我试图通过Jquery过滤包含li标记的ul标记。Jquery显示没有元素的标记具有元素。

$(".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>
发布于 2017-08-11 07:40:02
你快拿到了,用$(this).has("ul").length > 0
首先,从.has(".ul")中删除点,因为ul不是class。
<- credit to T.J.Crowder ->
您甚至可以使它更短一点,并使用$(this).has("ul").length
has“返回一个jQuery对象,而不是标志。jQuery对象总是真实的。”
$(".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));
}
});<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>
发布于 2017-08-11 07:39:33
您可以使用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>
https://stackoverflow.com/questions/45629475
复制相似问题