我有textarea
和button
我需要用新的替换。我在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')
,但这根本不起作用。
答案 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>');