我试图在用户点击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变量。
答案 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>