jquery 使用非选择器序列化
jquery serialize with not selector
我尝试使用 jquery serialize ($.serialize()) 和 not 选择器但没有成功。
我有一个 table 到一个表单中,我想在序列化之前排除它。
这是代码:
$("#id_form").not("#id_table").serialize();
这是一个fiddle说明问题
您可以创建 form
的 .clone()
并删除 table
然后您可以使用它来序列化:
var $clone =$("#id_form").clone();
$clone.find('table').remove();
var $frm = $clone.serialize(); // <-----here
注意:我在手机上无法查看fiddle。
要仅过滤不属于 table 的输入,您可以使用:
$("#id_form :input").filter(function() {
return ($('#id_table').find($(this)).length == 0);
}).serialize();
另一个解决方案是:
$("#id_form :input").not($('#id_table :input')).serialize();
简化所有任务的可能解决方法是创建自己的过滤器:
$.extend($.expr[':'],{
inputNotInTable: function(ele) {
var obj = $(ele);
return obj.is(':input') == true && obj.closest('#tab1').length == 0;
}
});
$("#test :inputNotInTable").serialize();
这是您的 fiddle 使用此解决方案的分支
$("#test :input").not($("#tab1 :input")).serialize();
我认为这是更好的方法
我尝试使用 jquery serialize ($.serialize()) 和 not 选择器但没有成功。 我有一个 table 到一个表单中,我想在序列化之前排除它。
这是代码:
$("#id_form").not("#id_table").serialize();
这是一个fiddle说明问题
您可以创建 form
的 .clone()
并删除 table
然后您可以使用它来序列化:
var $clone =$("#id_form").clone();
$clone.find('table').remove();
var $frm = $clone.serialize(); // <-----here
注意:我在手机上无法查看fiddle。
要仅过滤不属于 table 的输入,您可以使用:
$("#id_form :input").filter(function() { return ($('#id_table').find($(this)).length == 0); }).serialize();
另一个解决方案是:
$("#id_form :input").not($('#id_table :input')).serialize();
简化所有任务的可能解决方法是创建自己的过滤器:
$.extend($.expr[':'],{ inputNotInTable: function(ele) { var obj = $(ele); return obj.is(':input') == true && obj.closest('#tab1').length == 0; } }); $("#test :inputNotInTable").serialize();
这是您的 fiddle 使用此解决方案的分支
$("#test :input").not($("#tab1 :input")).serialize();
我认为这是更好的方法