2013-12-09 52 views
0

我是jQuery的新手。我試圖讓所有的輸入內div元素。以下是我迄今編碼:如何使用jQuery獲取元素中的所有輸入?

$(".pros_earnings_delete_annual_earning").click(function(e) { 
    e.preventDefault(); 
    var target = $(e.target); 
    var parent = target.parent(".total-for-earnings"); 
    var inputs = parent.children(":input"); 
    console.log(inputs); 
    $.each(inputs, function(index, value) { 
     console.log(value); 
    }); 
}); 

當我點擊我得到這個:

[prevObject: v.fn.v.init[0], context: button.pros_earnings_delete_annual_earning, selector: ".parent(.total-for-earnings).children(:input)", constructor: function, init: function…] 

每個方法似乎沒有任何輸出的確實。

HTML:

<div class="total-for-earnings" style='background-color:#ccc;padding:10px;overflow:hidden;'> 
    <div style='width:160px;float:left;'><strong>Total for 2013:</strong> 
     <input type='hidden' name='pros_earnings_annual_year[]' value='2013'> 
    </div> 
    <input type='text' name='pros_earnings_annual_amount_mul[]' placeholder='0' value='10' size='8' style='width:80px;' /> 
    <select name='pros_earnings_annual_amount_sup[]' style='width:110px;'> 
     <option value='Thousand'>Thousand</option> 
     <option value='Million' selected>Million</option> 
     <option value='Billion'>Billion</option> 
    </select><span>USD</span> 
    <div style="float:right;"> 
     <button class="pros_earnings_save_annual_earning" style="margin-left:15px; width:auto; height:25px;">Save</button> 
     <button class="pros_earnings_delete_annual_earning" style="margin-left:15px; width:25px; height:25px;">-</button> 
    </div> 
</div> 
+1

可以共享HTML –

+0

你能告訴你的HTML嗎?我的猜測是沒有元素匹配,可能是因爲直接父母不匹配選擇器。 – lonesomeday

+5

你可能不得不改變'var inputs = parent.find(「:input」);'因爲'.children()'只會找到父元素的直接子元素。同樣的方式'var parent = target.closest( 「.total-for-earnings」);'如果'total-for-earnings'不是目標元素的直接父項 –

回答

1

變化

var target = $(e.target); 
var parent = target.parent(".total-for-earnings"); 
var inputs = parent.children(":input"); 

到,

var parent = $(this).closest(".total-for-earnings"); 
var inputs = parent.find(":input"); //Unlike children(), find() will go any depth to match. 
+0

只需添加find(),我會檢查它。 :) – jnbdz

+1

@ Jean-NicolasBoulayDesjardins,完成:) –

+0

刪除輸入前面的「:」。因爲它選擇事件「選擇」元素。 – jnbdz

1

簡單地說:

var $inputs = $(':input',parent) 

將匹配父元素的上下文中的所有投入。

console.log的輸出,如果你想輸入的值表示這個集合中的每個項目,jQuery對象,只是問:

$inputs.each(function(){ 
    console.log($(this).val()); 
}) 

此外,還有另外一個錯誤 - target.parent(..)應已經target.parents(..)(複數)

直播例如:http://jsfiddle.net/3aJuZ/

0

問題是在這條線

var parent = target.parent(".total-for-earnings"); 

變化

var parent = target.parents(".total-for-earnings"); 
相關問題