2011-05-11 41 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');