我正在尝试做的事情。我有一个在新选项卡中打开的表单。我想提交带有一些额外内容的表格: a) 删除“target=_blank” b) 为将来保留该形式完整
这里是示例表格:
<div id="cloneForm">
<form id="searchForm" method="post" target="_blank" action="#">
</form>
</div>
所以我想到的是: 为了保持表单完整,我使用 jQuery 将表单克隆到变量中:
var searchForm = $('#searchForm').clone();
var cloneForm = $('#cloneForm').clone(); // This is just for workaround
但是在 $('#cloneForm') find('[target="_blank"]')
上工作的选择器不再工作。 (我想知道为什么?)。该选择器仅适用于“cloneForm”。
所以我可以做两件事:
- 我可以通过以下方式访问目标属性:
searchForm[0].target
设置为某物 cloneForm.find('[target="_blank"]').removeAttr('target')
但这两个我都不喜欢。我不喜欢添加额外的 div cloneForm。我也不喜欢通过数组访问目标。
有更好的建议吗?
最佳答案
表单是集合中的顶级对象,也是集合中唯一的顶级对象。只需使用 attr
即可:
cloneForm.attr("target", "new value");
// or
cloneForm.removeAttr("target");
如果它不是集合中唯一的对象,您可以使用 filter
来获取一个仅包含该对象的新集合:
cloneForm.filter('[target="_blank"]').attr("target", "new value");
// or
cloneForm.filter('[target="_blank"]').removeAttr("target");
...但是您的情况没有必要,因为您知道只有一个顶级元素。
关于javascript - 在 jQuery 对象顶层查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41875877/