Javascript jqueryajax使用按钮选择输入

Javascript jqueryajax使用按钮选择输入,javascript,jquery,ajax,Javascript,Jquery,Ajax,使用ajax进行调用,然后PHP格式化文本并将生成的HTML吐到页面上,jQuery将其附加到正文中。这个很好用 在生成的代码中,我在元素中添加了一个名为“.update info”的按钮,单击该按钮时,会获取其上方的字段,并将其放入一个对象数组(如提交表单,但不离开页面),该数组将通过AJAX提交 $('.customer-info-container').on('click','.customer-info .update-info',function(event){ sea

使用ajax进行调用,然后PHP格式化文本并将生成的HTML吐到页面上,jQuery将其附加到正文中。这个很好用

在生成的代码中,我在元素中添加了一个名为“.update info”的按钮,单击该按钮时,会获取其上方的字段,并将其放入一个对象数组(如提交表单,但不离开页面),该数组将通过AJAX提交

$('.customer-info-container').on('click','.customer-info .update-info',function(event){
        search_path = $('.search-rel-path').val()+'insert/insert_new_customer';
        var textinput = {};
        $(this).parent().parent().parent().parent().children('input:text').each(function(e){
            if($(this).length > 0){
                textinput[$(this).attr('name')] = $(this).val(); 
            } 
        }); 
});
我想在这里转储HTML以向您展示,但基本上父树位于具有2列的表的顶部

<table>
 <tbody>
  <tr>
    <td>Label goes here</td>
    <td><input type="text" name="foo"></td>
  </tr>
  <tr>
   <td colspan=2>
    <button class="update-info">Update info</button>
   </td>
  </tr>
 </tbody>
</table>

标签在这里
更新信息
注意:这并不准确。大约有21个字段

控制台转储的textinput返回“undefined”,所以我做错了什么。有什么想法吗?

替换此部分:

$(this).parent().parent().parent().parent().children('input:text').each(...);
与:

您还可以使用jQuery
parents
函数,如下所示:

$(this).parents("table")

不同之处在于,如果使用
最接近的
,它将开始通过您的DOM,直到找到第一个匹配的父项,但是
父项
将导致DOM中所有匹配的父项。

您为什么不给输入命名?您应该使用而不是multiple.parent()我本来会用的,但我还能用吗?每个都是最接近的?此外,所有的输入都是命名的,我只是为了减少输入字符的数量而没有在这里进行命名。我只是不想用。因为我想它就像。。。最近的DOM元素将其限制为一个元素。
$(this).parents("table")