[英]I'm trying to change order of tags inside textarea with jquery, but it's not working?
这是代码:
$('#taas').find('BLOG').append($('BLOG_INFO'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <textarea id="taas" style="width:100%;height:200px;"> <BLOG> <BLOG_INFO> text1 </BLOG_INFO> <POSTS> text2 </POSTS> </BLOG> </textarea>
我期望的结果:在 textarea 内:
<BLOG>
<POSTS>
text2
</POSTS>
<BLOG_INFO>
text1
</BLOG_INFO>
</BLOG>
为什么它不起作用?
提前致谢!
你可以这样做:
var blog = $($('#taas').val());
var bloginfo = blog.find("BLOG_INFO")[0].outerHTML
blog.find("BLOG_INFO").remove()
blog.append(bloginfo)
$('#taas').val(blog[0].outerHTML)
问题是您的$("#tass")
不包含任何元素,而只包含文本,因此 Freedomn-m 说您必须将其解析为 object,然后对其进行更改并将其粘贴回元素中。
演示
var blog = $($('#taas').val()); var bloginfo = blog.find("BLOG_INFO")[0].outerHTML blog.find("BLOG_INFO").remove() blog.append(bloginfo) $('#taas').val(blog[0].outerHTML)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <textarea id="taas" style="width:100%;height:200px;"> <BLOG> <BLOG_INFO> text1 </BLOG_INFO> <POSTS> text2 </POSTS> </BLOG> </textarea>
你也可以做得更简单一点:
var blog = $($('#taas').val());
var bloginfo = blog.find("BLOG_INFO").insertAfter(blog.find("POSTS"))
$('#taas').val(blog[0].outerHTML)
演示2
var blog = $($('#taas').val()); var bloginfo = blog.find("BLOG_INFO").insertAfter(blog.find("POSTS")) $('#taas').val(blog[0].outerHTML)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <textarea id="taas" style="width:100%;height:200px;"> <BLOG> <BLOG_INFO> text1 </BLOG_INFO> <POSTS> text2 </POSTS> </BLOG> </textarea>
请注意, $("textarea").val()
将始终提供一个string
。 这些看起来像 HTML 中的标签/元素,但它们是文本区域的文本/值。 您需要获取 textarea 值(或文本),然后使用 jquery 对其进行解析,以便操作标签/元素。
这就是我想出的 - output 是小写的(因为 HTML 标记现在是小写的)并且格式并不理想,因为 HTML 不需要使用不同的空格来传递它output
将文本解析为标签
var tags = $("<div/>").html($("#taas").val());
然后操纵并放回
var tags = $("<div/>").html($("#taas").val()); tags.find('BLOG').append(tags.find('BLOG_INFO')); $("#taas").val(tags.html())
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <textarea id="taas" style="width:100%;height:200px;"> <BLOG> <BLOG_INFO> text1 </BLOG_INFO> <POSTS> text2 </POSTS> </BLOG> </textarea>
快速说明
$("<div/>").html($("#taas").val());
//vs
$($("#taas").val());
与$($("#taas").val())
根元素是BLOG
所以你不能做blog.find("BLOG")
而$("<div/>").html($("#taas").val());
给出div
的根元素。 最终结果是 output 第一个使用innerHTML
/ .html()
,第二个使用.outerHTML
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.