我有序列化的表单,其中包含表格:
<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
元素?
答案 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();