我的主要文件是
<div id="man">
//some content
<div id="one">
//some content
<div id="two">
//some content
<div id="three">
//some content
<div id="four">
<a title="to delete">delete</a>
<a title="to reset">reset</a>
<a title="to change">change</a>
</div>...// all div ends...
<div id="woman">
//some content
<div id="one">
//some content
<div id="two">
//some content
<div id="three">
//some content
<div id="four">
<a title="to delete">delete</a>
<a title="to reset">reset</a>
<a title="to change">change</a>
</div>...// all div ends...
和jquery是 -
$("document").ready(function(){
$("a:contains(delete)").click(function(){
alert($(this).parent().parent().parent().parent().parent().attr("id"))
})
})
有没有其他方法可以找到顶级父级而不是使用它...... ??
答案 0 :(得分:2)
如果你可以稍微修改你的html并给那些顶级div一个共同的类:
<div id="man" class="top">
...
<div id="woman" class="top">
...然后您可以使用.closest()
method选择它们:
$("a:contains(delete)").click(function(){
alert($(this).closest('div.top').attr("id"))
})
请注意,您当前的html标记无效,因为您不应将相同的id
提供给多个元素。 (因此,鉴于您应该更改标记以修复将顶级div添加到类中也没有问题。)
编辑:证明即使“男人”和“女人”不在最高级别,上述情况仍然有效:http://jsfiddle.net/NVQXq/
答案 1 :(得分:1)
如果您必须严格遵守该html结构(无法添加类等),那么您当然可以在选择器中使用该结构;
$(document).ready(function(){
$("a:contains(delete)").click(function(){
var pId = $(this).parents("#man").attr("id") ||
$(this).parents("#woman").attr("id");
alert(pId);
});
});
这也假设你的html格式正确(即你的男人的div都已关闭)。
由于ID是唯一的(或者应该是,但不是所有的都是......)并且“男人”和“女人”元素必须是不相交的,因此元素只能是其中一个的孩子 - - 并且因为这个选择器将绑定到两者中的一个链接,你知道如果它的父母不是“男人”,那么它必须是“女人”。