我的主文件是
<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"))
})
})有没有其他方法可以找到最顶层的父级而不是使用这个...??
发布于 2012-06-21 14:57:40
如果您可以稍微修改一下html,并为这些顶级div提供一个公共类:
<div id="man" class="top">
...
<div id="woman" class="top">...then您可以使用.closest() method来选择它们:
$("a:contains(delete)").click(function(){
alert($(this).closest('div.top').attr("id"))
})请注意,您当前的html标记是无效的,因为您不应该为多个元素提供相同的id。(因此,假设您应该更改标记以修复问题,那么向顶级div添加一个类也是没有问题的。)
编辑:演示了即使在“男人”和“女人”不在顶层的情况下,上述方法仍然有效:http://jsfiddle.net/NVQXq/
发布于 2012-06-21 15:10:49
好吧,如果您必须严格遵守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 for man都是关闭的)。
因为ID是唯一的(或者应该是唯一的,尽管不是所有的ID都是...)而且"man“和”isn“元素必须是不相交的,一个元素只能是一个或另一个的子元素--因为这个选择器将绑定到这两个元素中的一个中的链接,所以您知道如果它的父元素不是"man”,那么它就一定是“an”。
https://stackoverflow.com/questions/11132991
复制相似问题