代码之家  ›  专栏  ›  技术社区  ›  Andy Fleming

jQuery获取项目父级

  •  3
  • Andy Fleming  · 技术社区  · 16 年前

    (父对象的内容)

    例如,在下面的示例中,“第1.1项”的父项将是“第2项”。

    项目:

            <ul class="sortable" id="page-list">
    
                <li><div>Item 1</div></li>
                <li><div>Item 2</div>
                    <ul>
                        <li><div>Sub Item 1.1</div></li>
                        <li><div>Sub Item 1.2</div></li>
                        <li><div>Sub Item 1.3</div></li>
                        <li><div>Sub Item 1.4</div></li>
                    </ul>
                </li>
    
            </ul>
    

                function saveNewList() {
                //get DIV contents in order
                var divContents = [];
                $("ul.sortable > li div").each(function() { divContents.push($(this).text()) });
                var quotedCSV = '"' + divContents.join('", "') + '"';
                $("#results").text(quotedCSV);
                //get DIV parents' contents in order
                var divParents = [];
                // something needs to go here...
                var quotedCSVparents = '"' + divParents.join('", "') + '"';
                $("#results2").text(quotedCSVparents);
    
    
            }
    
    2 回复  |  直到 16 年前
        1
  •  3
  •   user113716    16 年前
    $(this).parents('li:has(ul)').children('div:first').text();
    

    这将穿过最近的 <li> 有一个潜艇 <ul> <div> 孩子和得到文本。

    这也会得到文本时,你在上面 <li> 元素。这是需要的吗?如果没有,就加一个 .parent() 这样地:

    $(this).parent().parents('li:first').children('div:first').text();
    

    这应该避免在你不在里面的时候得到文本 <li> .

        2
  •  3
  •   CrayonViolent    16 年前

    <li> 包裹的标签:

    < <div>Sub Item 1.1</div> </li>

    但你可以用 .parent() 要在层次结构中向上移动一个步骤,请执行以下操作:

    $([selector that targets <div>sub item 1.1</div>]).parent().parent().parent().find('div')
    

    第一 .parent() 带你去公园 <li> 第二个带你去 <ul> ,第三个带你去主楼 < .find('div') <div>Item 2</div>