在我写的这个脚本中,我发现自己一直使用.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():
要得到你想要的,可以使用这两个DOM遍历方法.closest()或.parents():
$(this).closest('table').closest('tbody').attr('id');
$(this).parents('table').parents('tbody').attr('id');
http://api.jquery.com/closest
http://api.jquery.com/parents
再次看看:数字ID仅在HTML5中有效。