<form id="myForm">
<input type="hidden" name="_myCheckbox01" value="on">
<input name="myCheckbox01" type="checkbox" value="true">
</div>
和伪javascript:
var myNewForm = $("#myForm").remove("type hidden and name begins with _");
这样做的正确方法是什么?我想将它们保存在原始dom中并创建一个新对象,除非没有下划线的命名元素,否则它是相同的。
(我这样做的原因是因为spring-mvc form标签创建了隐藏的输入,但是我正在序列化表单,然后发布为json - 然后转换为java对象,pojo没有字段开始不想要的所以它会导致问题)。
答案 0 :(得分:3)
使用以 CSS属性selector
开头$('input[name^="_"]').remove();
将从DOM中删除元素。
修改强>
您可以从下划线开始克隆<input>
,从克隆中删除下划线并将其附加到DOM。
var hidden = $('#myForm input[name^="_"]');
var clone = hidden.clone();
clone.attr('name', clone.attr('name').substring(1));
hidden.after(clone);
需要编辑才能使用多个_
起始元素。
编辑2 对于多个<input>
s
$('#myForm input[name^="_"]').each(function() {
var clone = $(this).clone();
clone.attr('name', clone.attr('name').substring(1));
$(this).after(clone);
});
答案 1 :(得分:1)
那么你会使用如下所示的CSS Selector,然后执行removeNode操作,
$("*[name^=_]").remove();
解构以上:
$("*")
会让你获得Dom中的所有元素,
$("*[name]")
会使用name
属性
$("*[name^=_]")
会产生_
作为起始名称属性的所有元素。
现在开始删除它们
$("*[id^=_]").remove();
答案 2 :(得分:1)
var myNewForm = $("#myForm").filter(':not(input[name^="_"]');
我还使用serializeObject()插件,因此我使用的最终代码看起来像这样:
var myNewForm = $("#myForm").filter(':not(input[name^="_"]').serializeObject();
答案 3 :(得分:0)
要选择名称以_
开头的隐藏字段,您可以使用以下内容:
$('#myForm input[type="hidden"][name^="_"]').remove();
如果您只想从元素的名称中删除_
字符,这应该有效:
$('#myForm input[type="hidden"][name^="_"]').prop('name', function(i, oldname) {
return oldname.substr(1);
});
请参阅: