如何使用jquery选择父字段

时间:2012-06-21 06:53:31

标签: jquery

我的主要文件是

<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"))
})
})

有没有其他方法可以找到顶级父级而不是使用它...... ??

2 个答案:

答案 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是唯一的(或者应该是,但不是所有的都是......)并且“男人”和“女人”元素必须是不相交的,因此元素只能是其中一个的孩子 - - 并且因为这个选择器将绑定到两者中的一个链接,你知道如果它的父母不是“男人”,那么它必须是“女人”。