使用jQuery提取列表'Id name

时间:2009-02-19 07:43:08

标签: jquery list

我正在使用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名称。什么是优化程序?

3 个答案:

答案 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')