在jQuery对象顶级

时间:2017-01-26 14:36:54

标签: javascript jquery html forms

我想做什么。我有一个在新标签页面中打开的表单。我想提交一些额外的东西: 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

但是已经使用$(&#39; #clickForm&#39;)find('[target="_blank"]')的选择器不再有效。 (我想知道为什么?)。此选择器仅适用于&#34; cloneForm&#34;。

所以我可以做两件事:

  • 我可以通过以下方式访问目标属性:searchForm[0].target设置为
  • cloneForm.find('[target="_blank"]').removeAttr('target')

但我不喜欢这两个。我不想添加额外的div cloneForm。我都不喜欢通过数组访问目标。

有更好的建议吗?

1 个答案:

答案 0 :(得分:0)

表单是集合中的顶级对象,也是集合中唯一的顶级对象。只需在其上使用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");

...但在你的情况下没有必要,因为你知道只有一个顶级元素。