在查询中使用replace替换多个元素

时间:2014-06-02 11:38:07

标签: javascript jquery

我有textareabutton我需要用新的替换。我在jquery中使用replaceWith来实现这一点,但似乎我做错了。

这是我的javascript:

<script>
$(document).ready(function () {
     $(document).on('click', 'div', function(){
     $('textarea, button').replaceWith('<textarea>New</textarea><button>Old</button>');
     });
});
</script>

我的HTML:

<textarea>Old</textarea>
<button>Old</button>

<div>Replace</div>

单击Replace div应将Old文本区域和按钮替换为新文本区域,但由于某种原因,它会导致显示2个文本区域和2个按钮。

尝试使用$('textarea', 'button'),但这根本不起作用。

2 个答案:

答案 0 :(得分:2)

如果根据您在其他地方的评论,您不能将这两个元素分开用于文本目的,那么您应该确保两个现有元素共享一个共同的父元素(例如<div>),然后替换内容< / em>那个父母:

<div id="parent">
  <textarea>Old</textarea>
  <button>Old</button>
</div>

$('#parent').empty().append(newContent);

或者,如果您无法更改下载的HTML,那么在事件处理程序中,如果您可以假设“replace”div与原始内容之间没有其他匹配元素:

$(this).prevAll('button').first().remove();
$(this).prevAll('textarea').first().remove();
$(this).before(newContent);

答案 1 :(得分:1)

您应该将两者分开,以避免在同一语句中尝试替换两者。

$('textarea').replaceWith('<textarea>New</textarea>');
$('button').replaceWith('<button>Old2</button>');