Jquery .has(" tag")过滤器显示没有元素的标签有它们

时间:2017-08-11 07:35:20

标签: javascript jquery html

我试图通过Jquery过滤包含li标记的ul标记。 Jquery .has("tag")过滤器显示没有元素的标签有它们。

Jquery code



$(".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;
&#13;
&#13;

2 个答案:

答案 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;

&#13;
&#13;
$(".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;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用findlength来检查当前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>