试图获得最接近的表单 ID?

trying to get a form id with closest?

对于一个小购物车,我在一个页面上有多个表单。每个表单代表一个产品的数量,带有一堆动作触发器。在表格之外,我还有一些需要使用的数据。

无论如何,我需要获取与动作触发器对应的表单 ID。

所以我创建了一个函数,在单击操作按钮时调用该函数。

    function transferData() {
    // var form_id= $(this).closest("form").prop("id");
   // var form_id= $(this).prev("form").prop("id");
    var form_id= $(this).closest('td').parent().closest('form').prop('id');

操作由

触发
<button name="submit[1]"  type="button"  onClick="transferData()" class="btn btn-info btn-sm"><i class="fa fa-refresh"></i></button>

html 结构简化

<tr><form id="form_update[1]" name="form_update[1]" action="cart_update.php" method="post"><td data-th="Product"><div class="row">
                                <div class="col-sm-2 hidden-xs"><img width="100" src="../images/frere.jpg" alt="Frere" class="img-responsive"/></div>
                                <div class="col-sm-10">
                                    <h4 class="nomargin">Frere</h4>
                                    <p>bad boy frere</p>
                                </div>
                            </div></td><td data-th="Price">.00</td><td data-th="">&nbsp;</td><td data-th="Quantity">
                            <input type="number" min="0" name="item_qty_summary[1]" class="form-control text-center" value="4">
                        </td><td data-th="Subtotal" class="text-right" >0</td><td class="actions text-right">

                            <button name="submit[1]"  type="submit"  onClick="transferData(this)" class="btn btn-info btn-sm"><i class="fa fa-refresh"></i></button>

                            <a href="cart_update.php?removep=2015002&return_url=aHR0dC90aXF1ZXNob3AvaW5jbHVkZXMvdmlld19jYXJ0XzIwMTUucGhw" class="btn btn-danger btn-sm"><i class="fa fa-trash-o"></i></a>                                                               
                        </td></form></tr>

但是我收到了一条未定义的错误消息,而不是 id

我忽略了什么??

在您的函数中传递一个参数,如下所示:

function transferData(elem) {

并使用 $(elem) 而不是 $(this) 并像这样在 html 中使用:

onClick="transferData(this)"

根据您对 html 的更新,您可以这样使用:

var form_id= $(elem).closest('form').attr('id');

首先,将您的事件处理程序附加到 javascript ...

$("button[type='submit']").on('click', transferData);

... 然后,在事件处理程序中,this 是被单击的元素(提交按钮):

function transferData() {
    var form_id= this.form.id;
    ...
}