2011-05-11 38 views
1

这可能是一个重复的问题,但我确实搜索和我有这么多不同的答案,我不知道要使用或如何做到这一点。jQuery select parent

<? 
if(isset($content)) 
{ 
    $i = 1; 
    foreach($content as $item) 
    { 
     echo "<li><a href='#' name='" . $item['id'] . "'>" . $item['title'] . "</a></li>"; 
     $i++; 
    } 
} 
?> 

我已经添加了一个函数,这些链接与jQuery来处理ajax调用。我选择的链接如下:

$("#tips_list ul li a").click(function(e) { //... } 

然而,这并没有使有很大的意义,因为现在你必须点击的实际文本,而不是列表项。所以我想我会重新构建我的HTML,所以锚标签围绕着li标签。

`<a href="#" name=""><li>foo</li></a>` 

然后我改变了我的jQuery相应代码:

$("#tips_list ul a li").click(function(e) { //... } 

不过,现在,当我点击..它抓住列表项的标签为$(this);这意味着我无法从锚标记中获取名称属性。所以!我需要做的是从锚标记中获取name属性。我真的不知道最简单的方法是什么。我对jQuery没有经验。

非常感谢您的帮助!

+0

[$(this).parent()](http://api.jquery.com/parent/)不起作用?你也应该考虑更新你的CSS来更好地处理你的LI。 – Khez 2011-05-11 07:38:06

+0

不要在'li'周围放一个'a',这是无效的。 – kapa 2011-05-11 07:45:51

回答

1

如何回到原来的方法,并设置你的CSS #tips_list ul li a {display:block}?这应该使扩张和整个李,使整个李似乎可点击。您的原始代码应该可以正常工作。

+0

好的,显然我对自己做得太过分了,而且非jQ的方式更加简单。谢谢一堆! – cabaret 2011-05-11 07:56:31

3

保留旧的标记。后面的一个很胡思乱想,使用下面的脚本。

$("#tips_list ul li").click(function(e) { 
    var name = $(this).children("a").attr("name"); 
    alert(name); 
} 
1

为了让您只需要使用 $(this).parent() 所以我会做这样的一个元素的父: $(this).parent('a').attr('name');