2012-04-25 40 views
8

我試圖在我的LI中定位一個元素只有即時通訊有麻煩,我已經閱讀了jQuery文檔,但無法弄清楚我做錯了什麼?使用jQuery在父容器中查找元素

上的click事件,我想找到一個元素,改變裏面的HTML ...

http://jsfiddle.net/68ePW/3/

<li> 
    <h2>400</h2> 
    <form> 
     <input type='submit' class='click' value='send'>     
    </form> 
</li> 

$('.click').click(function(){ 
    $(this).parent('li').closest('h4').html('asdasd'); 
}); 
+1

哪個元素?並做什麼?在這裏顯示你的代碼**,JS Fiddle是一個很好的補充,但是你的問題應該是合理的,並保留它們的用處,而不依賴於外部網站。 – 2012-04-25 23:15:14

+0

我想你的意思是使用'h2'作爲最接近的參數() – Christian 2012-04-25 23:22:49

+1

'$(this).closest('li')。find('h2')'? – zerkms 2012-04-25 23:23:44

回答

19

主要基於以下HTML(請記住,我不得不包裹li與在ul,因爲展開的li是無效的HTML):

<ul> 
    <li> 
     <h2>400</h2> 
     <form> 
      <input type='submit' class='click' value='send'>     
     </form> 
    </li>  
</ul>​​​​​​​​​​​​​​​​​​ 

而下面的jQuery:

$('.click').click(function(){ 
    $(this).parent('li').closest('h4').html('asdasd'); 
}); 

看來你試圖找到lih4。您遇到的問題有多種:

  1. 使用parent()只查找當前元素的直接父元素;使用closest()而是通過祖先直到找到一個匹配的元素來查找,
  2. closest()(如前所述)看起來通過祖先元素,而你試圖找到的後代中有一個元素li元素。使用find(),
  3. 您正在搜索h4元素,該元素不存在。您需要(我假設)找到存在於DOM中的h2

所以:

$('.click').click(function(){ 
    $(this).closest('li').find('h2').html('asdasd'); 
}); 

JS Fiddle demo

參考文獻:

+0

謝謝@David托馬斯,我看到它在jsfiddle上工作只有它不在我的實際網站上,在頁面加載窗體最初顯示:無,只有當按鈕頂部切換其視圖時纔可見點擊,這可能是原因嗎? – Liam 2012-04-25 23:25:21

+0

我不知道;回答我們必須看到您的網站,並且瞭解那裏發生了什麼。 – 2012-04-25 23:27:09

+4

「我看到它只適用於jsfiddle,只是它不適用於我的實際網站」---而現在**你的**工作就是讓它工作。我們在這裏想要知道如何做到這一點,而不是爲您做所有事情。 – zerkms 2012-04-25 23:30:13