我使用.serializeArray函数来收集表单的所有输入,但我想排除某个div类中的输入。我认为.not()选择器会执行此操作,但它似乎不起作用。
最基本的是我的代码:
HTML:
<form class="theForm">
<input name="a" value="a"/>
<div class="excludeMe">
<input name="c" value="c"/>
</div>
</form>
使用Javascript:
$.each($(".theForm").not(".excludeMe").serializeArray(),
function() {
alert(this.name);
});
我希望警报只是'a',但这会警告'a'然后'b'。
答案 0 :(得分:1)
您必须在<div><input/></div>
然后将选择器更改为此$.each($(".theForm :not(.excludeMe) input")
https://jsfiddle.net/cysaczu5/3/
我建议删除div并直接将“excludeMe”类添加到输入中。然后选择器变为$.each($(".theForm input:not(.excludeMe)")
答案 1 :(得分:0)
在输入而不是div上使用此类,它将起作用。
'
$.each($("input").not(".excludeMe").serializeArray(),
function() {
alert(this.name);
});
<input name="c" class='excludeMe' value="c"/>
答案 2 :(得分:0)
请尝试
<form class="theForm">
<input name="a" value="a"/>
<div class="excludeMe">
<input class="excludeMe" name="c" value="c"/>
</div>
</form>
$.each($(".theForm :not(.excludeMe)").serializeArray(),
function() {
alert(this.name);
});
答案 3 :(得分:0)
最简单的答案是从您要跳过的输入中删除name
属性。这样,serializeArray()
也会跳过它:
HTML:
<form class="theForm">
<input name="a" value="a" />
<input value="c" />
</form>
JS:
$.each($(".theForm").serializeArray(), function() {
alert(this.name);
});
答案 4 :(得分:0)
只需将input
放在:not
语句之前,只匹配表单内的输入,而不是表单本身:
$.each($(".theForm input:not(.excludeMe)").serializeArray(), function() {
alert(this.name);
});