Извлечение списка 'Id name с использованием jQuery - PullRequest
0 голосов
/ 19 февраля 2009

Я использую jQuery, и мне нужно извлечь имя идентификатора списка.

<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?

При нажатии, когда я пытался проверить приведенный выше код на внешний, он также предупреждает это имя sub ID. Что бы оптимизировать процедуру?

Ответы [ 3 ]

0 голосов
/ 19 февраля 2009

То, что вы хотите сделать, - это пройти по родительскому дереву () до самого последнего - вот как я бы это сделал:

$("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);
    }   
});
0 голосов
/ 19 февраля 2009

Попробуйте:

$(this).parents('ul:last').attr('id')
0 голосов
/ 19 февраля 2009
var parent_id=$(this).parent().parent().attr('id'); 

Это некрасиво, но единственный известный мне способ - пройти по дереву.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...