如果孩子上课了

时间:2015-02-24 15:28:33

标签: jquery

我需要检查我的图标在以下代码中的哪个类(如果存在)。

<li>
    <a href="#">link 1</a>
    <i class="fa fa-caret-down"></i>
</li>
<li>
    <a href="#">link 2</a>
</li>

看起来非常直接,但我似乎无法让它发挥作用。

$(document).on('click', 'li a', function() {
    if ($(this).find('i').hasClass('.fa-caret-down')) {
        alert('down');
    } else if ($(this).find('i').hasClass('.fa-caret-up')) {
        alert('up');
    }
});

我错过了什么?

2 个答案:

答案 0 :(得分:2)

您的目标是<a>,并在其中要求<i>this)。你想要做的是要求this.parent()并从那里继续,像这样:

$(document).on('click', 'li a', function() {
    if ($(this).parent().find('i').hasClass('fa-caret-down')) {
        alert('down');
    } else if ($(this).parent().find('i').hasClass('fa-caret-up')) {
        alert('up');
    }
});

ps:你也可以定位li(而不是li a)。

答案 1 :(得分:2)

两个错误。

  1. 您必须使用siblings()作为find()搜索子元素。

  2. hasClass()中,您必须从课程中删除点.

  3. &#13;
    &#13;
    $(document).on('click', 'li a', function() {
      if ($(this).siblings('i').hasClass('fa-caret-down')) {
        alert('down');
      } else if ($(this).siblings('i').hasClass('fa-caret-up')) {
        alert('up');
      }
    });
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <li>
      <a href="#">link 1</a>
      <i class="fa fa-caret-down"></i>
    </li>
    <li>
      <a href="#">link 2</a>
    </li>
    &#13;
    &#13;
    &#13;