1

我有以下 HTML 格式:

<div class="product">
...
</div>
...
(n-th row elements)
<div class="product">
    <div class="control-group">
        <label>Name</label>
        <input type="text" value="T-Shirt Greenday" name="name[]">
    </div>
    <div class="control-group">
        <label>Quantity</label>
        <input type="text" value="3" name="quantity[]">
    </div>
    <div class="control-group">
        <a href="#" class="remove">Remove</a>
    </div>
</div>
...

如何仅从第 n 行获取输入字段并使用 jquery 对其进行序列化?(我尝试过这样的事情:parent().parent().siblings('.control-group').children(':input').serialize(),但没有成功)

谢谢。

4

1 回答 1

0

您可能是从.remove事件处理程序中调用此代码 - 但随后您的.parent()调用次数过多,div.product反而是调用。这个元素唯一可见的兄弟元素是div.products,它们没有:input子元素——所以你最终会得到一个空的 jQuery 对象,而且这个对象很难正确序列化。)

当然,您可以通过删除未执行的.parent()调用来修复它。然而,完全摆脱这条链是有利的,用.closest()parent()代替它:

$('.remove').click(function() {
    var serializedRow = $(this).closest('.product').find(':input').serialize();
    console.log(serializedRow);
    // ...
    return false;
});

JSF中。

此开关的主要优点是能够在不触及-using 方法的情况下调整内部结构div.product(例如,为控制组添加另一个包装器) 。closest此外,.closest(some_class).parent()s群更清楚地表明你的真实意图。)

于 2013-09-16T15:46:42.407 回答