JQuery使用复杂的选择器进行序列化

时间:2013-04-22 20:31:09

标签: javascript jquery forms serialization

我有序列化的表单,其中包含表格:

<form id="myForm" method="post">
    <table>
        <tr class="hide">
            <td><input /></td>
        </tr>
        <tr>
            <td><input /></td>
        </tr>
        ...
    </table>
</form>

我想使用JQuery序列化,但没有<tr>元素与hide类的表单元素。 我试过这个:

$('#myForm').not('.hide').serialize()

not中的选择器仅在表单元素中查找hide。有没有办法如何在<tr>选择器中检查父级最近的not元素?

2 个答案:

答案 0 :(得分:3)

要在序列化之前从表单中删除元素,首先克隆表单然后删除不需要的元素并序列化可能更容易:

var cloned_form = $('#myForm').clone(false);
    cloned_form.remove('.hide');

var serialized = cloned_form.serialize();

另一种方法是定位表单内的所有元素,并过滤掉.hide元素内的所有内容,如下所示:

$('*','#myForm').filter(function() {
    return !$(this).closest('.hide').length;
}).serialize();

答案 1 :(得分:1)

我认为你可以这样做:

$("#myForm :input:not(.hide input)").serialize();