2013-12-09 53 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"); 
相关问题