我正在使用jQuery,我需要提取List的Id名称。
<ul id="nav">
<li id="outer1m"><a href="#url"><b class="">outer1</b></a></li>
<li id="outer2m"><a href="#url"><b class="">outer2</b></a></li>
<li id="outer3m"><a href="#url"><b class="">outer3 </b></a>
<ul style="display: none;">
<li id="sub1"><a href="#url">inner1</a></li>
<li id="sub2"><a href="#url">inner2</a></li>
<li id="sub3"><a href="#url">inner3</a></li>
</ul>
</li>
<li id="outer4m"><a href="#url"><b class="">outer4</b></a>
<ul style="display: none;">
<li id="sub8"><a href="#url"><i class="">inner4 </i></a></li>
<li id="sub9"><a href="#url"><i class=""> inner5</i></a></li>
</ul>
</li>
</ul>
$("li ").click(function()
{
if ($(this).is("[id ^='sub']")) {
var current_id=$(this).attr('id');
alert(current_id);
}
});
此代码有助于在单击期间警告内部列表,例如sub1,sub2等。如何提醒外部IDS?
点击,当我尝试将上面的代码检查到外部时,它也会警告子ID名称。什么是优化程序?
答案 0 :(得分:0)
var parent_id=$(this).parent().parent().attr('id');
这很难看,但我知道的唯一方法就是穿过树。
答案 1 :(得分:0)
你想要做的是将父()树遍历到最后一个 - 这就是我将如何做到这一点:
$("li").click(function(){
if($(this).is("[id^='sub']")){
var all_ul_parents = [];
// get parents which are uls, and put each id in an array
$(this).parents().filter('ul').each(function(){
all_ul_parents.push($(this).attr('id'));
});
// the final one added will be highest level ul parent
current_id = all_ul_parents.pop();
alert(current_id);
}
});
答案 2 :(得分:0)
尝试:
$(this).parents('ul:last').attr('id')