2014-04-29 71 views
0

我剛剛開始使用jQuery。我正在構建一個表格,該表格位於由PHP提供的表格行內。jQuery`this`選擇器的問題

我需要在表單元格中獲取PHP輸出的時間。但我無法讓jQuery this選擇器工作。我能夠使用它來獲取我提交的表單的屬性,但我無法獲取任何子元素。我試過,$("td.time", this).html();$(this).find("td.time").html();甚至孩子的選擇。所有三個總是返回未定義的值。對於測試,我刪除了這個,只是抓住第一個元素,它返回了div的內容。這是我的一些代碼。

表運行像這樣:

<table> 
    <form id="[ever changing]" class="users"> 
    <tr> 
     <td class="time">2014-04-28 23:57:03</td> 
    <tr> 
    </form> 
</table> 

jQuery的嘗試在這裏抓住它:

$(document).on("submit", "form.users", function() { 
    event.preventDefault(); 
    var time = $("td.time", this).html(); 
}); 

它總是返回undefined,我究竟做錯了什麼?

+1

你需要傳遞define function作爲'function(event)'。由於事件未定義,您將收到錯誤消息。 – Satpal

+0

@Palmer你能發佈完整的html嗎?它是完整的HTML嗎? –

回答

3

事件在form你需要embedtdtable否則td將得到form

HTML

<form id="[ever changing]" class="users"> 
    <table> 
     <tr> 
      <td class="time">2014-04-28 23:57:03</td> 
     <tr> 
     <input type="submit" value="submit"> 
    </table> 
</form> 

JS

0刪除
$(document).on("submit", "form.users", function(event) { 
    event.preventDefault(); 
    var time = $(this).find("td.time").html(); 
    console.log(time); 
}); 

Demo Link

+0

好的,謝謝你的幫助。 – Palmer

+0

不客氣,很高興它爲你工作。 –

1

你錯過了在function(event){

$(document).on("submit", "form.users", function(event) { 
     event.preventDefault(); 
     var time = $("td.time", this).html(); 
    }); 
+0

這不是問題,我仍然得到一個未定義的值。 – Palmer

1

請注意,您havenot添加table標籤呢。所以當瀏覽器呈現html時,它不會添加td標籤。相反,它只會看起來像下面這樣,如果你檢查html源代碼

<form class="users" id="[ever changing]"> 

    2014-04-28 23:57:03  
</form>