在jquery中更有效的方法来做parent() parent() parent()等

前端之家收集整理的这篇文章主要介绍了在jquery中更有效的方法来做parent() parent() parent()等前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我写的这个脚本中,我发现自己一直使用.parent()连续七次来获取元素。虽然这样做,似乎可以/应该是一个更简单的方法来做这个/我不知道的功能。除更多元素之外的任何想法,更具体的类/ ids?

基本上,当我在下面的html中引用id为’innerSpan’的跨度时,我的问题归结为访问id为外部的div:

<div id='outer'>
    <a href="some_url">
        <span id="inner">bla bla</span>
    </a>
</div>

所以目前,我会做这样的事情:

var outer = $(‘#inner’)。parent()。parent()

并且深深嵌套的元素变得疯狂。

另一个例子:

这里我的html:

<div id="options_right">
            <table id="product_options_list" class="table table-bordered">

            <tbody id="1">
                <tr>
                    <td>
                        <select name="option_1_val[0]" class="option_table_select">
                            <option value="Red">Red</option>
                            <option value="Blue">Blue</option>
                            <option value="Green">Green</option>
                            </select>
                    </td>
                    <td>
                        <table class="table sub_options" id="0">
                            <tbody>
                            <tr>
                                <td>
                                    <select name="option_1_sub[0][]" class="option_table_select  sub_option_select">
                                        <option value="">None</option>
                                        <option value="2">Size</option>
                                    </select>
                                    <div class="sub_option_value_holder">
                                        <select name="option_1_sub_val[0][]" class="sub_option_values" style="display:none;"></select>
                                    </div>
                                </td>
                                <td>
                                    <a href="#" class="remove_sub_option btn btn-primary">Remove</a>
                                </td>
                                <td>
                                    <a href="#" class="add_sub_option btn btn-primary">Add Another</a>
                                </td>
                            </tr>
                            </tbody>
                        </table>
                    </td>

和我的脚本。我写了一个函数,需要传递它的主行tbody以及辅助表id的id,以便我可以动态添加更多的行。你不需要这个问题的功能,但基本上我得到这样的id:

get_suboption_row($(this).parent().parent().parent().parent().parent().parent().parent().attr('id'),$(this).parent().parent().parent().parent().attr('id'));

谢谢

jsFiddle:http://jsfiddle.net/Hg4rf/

单击添加另一个以触发事件

解决方法

你有2个嵌套表,
要得到你想要的,可以使用这两个DOM遍历方法.closest()或.parents():
$(this).closest('table').closest('tbody').attr('id');
$(this).parents('table').parents('tbody').attr('id');

jsFiddle demo

http://api.jquery.com/closest
http://api.jquery.com/parents

再次看看:数字ID仅在HTML5中有效。

猜你在找的jQuery相关文章