Jquery获取父ID

时间:2014-02-03 22:25:52

标签: jquery

我试图在用户点击li的项目后提取ul的ID ...

这是我的jquery

$('.mitm').click(function () {
    var itmlvl = $(this).text();
    var itmp = $(this).parent().attr("id");
    alert(itmlvl + " " + itmp);
});

这是我的HTML

<div id="menu_arrow" class="vocab_arrow"></div>
     <ul class="lvldropmnu" id="uvocab">
          <a href="#"><li class="mitm">1</li></a>
          <a href="#"><li class="mitm">2</li></a>
     </ul>
</div>

我尝试使用.find()等几种不同的组合,但没有运气,我总是在我的警告中得到一个“未定义”的itmp变量。

3 个答案:

答案 0 :(得分:4)

您的HTML不正确,因此您无法获得一致的结果。列表只能包含列表项,而不能包含链接。

将链接放在列表项目中:

<div id="menu_arrow" class="vocab_arrow"></div>
     <ul class="lvldropmnu" id="uvocab">
          <li class="mitm"><a href="#">1</a></li>
          <li class="mitm"><a href="#">2</a></li>
     </ul>
</div>

这也会使列表成为列表项的父级,因此您的相关代码将起作用。

答案 1 :(得分:0)

$(this)的父级是,你需要使用

var itmp = $(this).parent().parent().attr("id");

var itmp = $(this).parent('ul').attr("id");

var itmp = $(this).closest("ul").attr("id");

答案 2 :(得分:0)

$(function () {
  $('.mitm').click(function () {

    var itm = $(this),
        itmlvl = itm.text(),
        itmp = itm.parent().attr("id");
      alert(itmlvl + " " + itmp);
  });

})();


 <ul class="lvldropmnu" id="uvocab">
      <li class="mitm">
        <a href="#">1</a>
      </li>
      <li class="mitm">
        <a href="#">2</a>
      </li>
    </ul>

预览:http://plnkr.co/edit/Lv9lNSLr7J6x2ujlTZgP?p=preview