2014-07-19 133 views
0

我需要用我下面的代碼幫助:jQuery的孩子>父>孩子>子選擇

HTML:

<table> 
<tr class="oc"> 
    <td class="process">process</td> 
    <td><input name="data" /></td> 
</tr> 
<tr class="oc"> 
    <td class="process">process</td> 
    <td><input name="data" /></td> 
</tr> 
</table> 

TD [CLASS =過程]的點擊,我需要的值爲輸入[名稱=數據]。我嘗試了幾種方式,但都失敗了。我嘗試包括如下:

裏面的Jquery上點擊功能:

var v = $(this).parent().children(":eq(2)").children().val()*1; 
var v = $(this).parent().children.children("input[name=data]").val()*1; 
var v = $(this).parent().find("input[name=data]").val()*1; 
var v = $(this).parent().children(":eq(2)").children().val()*1; 

什麼發生的事情是,我每次點擊TD [CLASS =過程],我得到的以前的值輸入[名稱=數據] +當前輸入[名稱=數據]

的價值,我不知道爲什麼。幫助將不勝感激。

+0

'$(本)。接下來()。找到( '輸入[名稱=數據]')。VAL()' – dfsq

+0

不要用乘法運算符值轉換爲數字。這不是一個好習慣。使用'parseFloat(number)'或'parseInt(number,10)'。 – ilyamilosevic

回答

2

使用jQuery是很簡單的

$('.process').click(function(e) 
{ 
    var myData = $(this).next().children().val(); 
}); 
+0

非常感謝。我在別的地方搞混了。 – origin

2

你的第三個變種已經工作。

var v = $(this).parent().find("input[name=data]").val()*1; 

你的第二種方法是不正確的,因爲children是一個函數。

你的第一和第四種方法(除非我是盲人)是一樣的。但是,由於:eq()是零索引的;您選擇的<td>實際上是位置1,而不是2。你可以看到這個工作here

var v = $(this).parent().children(":eq(1)").children().val()*1; 

您可能還喜歡聽到next(),這可能使這更容易一點。

var v = $(this).next().children().val() * 1; 

請參閱next()this fiddle

2

您可以使用next()定位到下一列,然後使用find()children()訪問其中的輸入。

$("td.process").click(function(){ 
    var v = $(this).next("td").find("input[name='data']").val(); 
}) 
1
$(this).next().find('input[name=data]').val()