更有效的方法在jquery中执行parent()。parent()。parent()等
在我写的这个脚本中,我发现自己连续七次使用.parent()来获取元素。 虽然这有效,但似乎可以/应该是一种更简单的方法来实现这个/我不知道的function。 关于更多元素的更具体的类/ ids以外的任何想法?
基本上,当我在下面的html中引用id为’innerSpan’的span时,我的问题归结为访问id为id的div:
所以目前,我会做这样的事情:
var outer = $('#inner').parent().parent()
并且深深嵌套的元素会变得疯狂。
另一个例子:
在这里我的HTML:
Red Blue Green None Size Remove Add Another
和我的剧本。 我写了一个函数,需要传递主行tbody的id以及辅助表id,这样我就可以动态添加更多行。 你真的不需要这个问题的function,但基本上我得到这样的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()
-
.closest()
向上移动DOM树,直到找到所提供选择器的匹配项
-
.parents()
将DOM树移动到文档的根元素,将每个祖先元素添加到临时集合中; 然后,如果提供了一个选择器,它会根据选择器过滤该集合
使用嵌套表:
$(this).closest('table').closest('tbody').attr('id');
$(this).parents('table').parents('tbody').attr('id');
jsFiddle演示
我认为.closest()
就是你要找的:)
如果您知道该元素的CSS Class name
,则可以调用closest()
方法
var thatParent= $("#someId").closest(".somCSSClassName")
所以你的代码被重写为
get_suboption_row($(this).closest("someClass").attr('id'), $(this).closest("someOtherClass").attr('id'));
编辑:看到你的JSfiddle后
使用类名来获取父表。
alert($(this).closest('tbody').closest('.table-bordered').attr('id'));
工作样本: http : //jsfiddle.net/Hg4rf/2/