【问题标题】:How can i find the index of parent clicking child [duplicate]我如何找到父母点击孩子的索引[重复]
【发布时间】:2012-04-05 21:35:59
【问题描述】:

点击孩子时,我想知道父索引号。例如,当我点击每个 ul 的孩子时,有一个 3 ul 的 div,它应该显示父索引号。它的父母。我怎样才能得到这个?

jQuery:

$('.opSection').on('click','li',function(){

    var num = $(this).parent('ul').index();

    alert(num);

    //alert(chartData.Indices[$(this).index()][$(this).index()]);

    })

HTML:

    <div class="opSection">//parent of all
<dl><dd>
        <ul class="selectGroup" title='allIndia' data-select='1'>
            <li data-index="123" class="c_on">All India</li> // when i click any of li i need 0
        </ul>

        <ul class="selectGroup" title='allIndia' data-select='1'>
            <li data-index="123" class="c_on">All India</li> // when i click this, i need 1
        </ul>
</dd></dl>
    </div>

【问题讨论】:

    标签: jquery


    【解决方案1】:
    $('.opSection').on('click', 'li', function () {
        alert($(this).parent().index();
    });
    

    注意在处理多个元素的事件时,我使用了事件委托来提高性能。

    这里的重要部分是parent() 选择ul,然后选择index(),当不带参数传递时,返回它相对于其兄弟元素的位置。

    编辑正如您在评论中所说,您的标记与您在问题中发布的内容不同,请尝试以下操作:

    $('.opSection').on('click', 'li', function (e) {
        $(e.delegateTarget).find('.selectGroup').index(this.parentNode);
    });
    

    $(e.delegateTarget)$('.opSection') 相同(但更快)。然后,我们在所有后代 (find()) 中搜索所有 &lt;ul /&gt;,并使用相同的 index() 方法找到我们单击的位置。

    【讨论】:

    • 它总是只给出 0。 UL 不是 ('.opSection') 的直接子级,它没有子级,其中一个子级是 UL
    猜你喜欢
    • 2012-08-27
    • 1970-01-01
    • 2014-08-15
    • 2019-01-02
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多