如何在不丢失属性的情况下更改元素标记
How to change element tag without losing attributes
我想在不丢失元素属性的情况下更改元素标记。
这就是要素:
<h4 class="form-title ng-binding" id="s50" ng-bind-html="'s50' | translate" translate-cloak="s50">searching</h4>
我想把h4改成h1,所以它看起来像这样:
<h1 class="form-title ng-binding" id="s50" ng-bind-html="'s50' | translate" translate-cloak="s50">searching</h1>
我试过代码:
$('h4').replaceWith($('<h1>' + this.innerHTML + '</h1'));
但这样我就失去了this.innerHTML返回未定义的属性我已经尝试将this.inner.HTML
更改为$('h4').innerHTML
,但它仍然返回undefined。
您需要做的第一件事就是获取所有属性。你也可以在这里获取innerHTML。
var $h4 = $('h4');
var attrs = $h4[0].attributes;
var html = $h4[0].innerHTML;
attrs
现在是一个属性数组,您希望它看起来像一个对象,这样您就可以将它传递到.attr()
方法中。
var attr = {};
$.each(attrs, function(i,e) { attr[e.nodeName] = e.nodeValue; });
var $h1 = $('<h1/>').html(html).attr(attr);
$h4.replaceWith($h1);
您可以使用attr
方法逐个获取所有属性,并将它们传递给新的h1元素。
var $h4 = $('h4#s50');
var h4bind = $h4.attr('ng-bind-html');
var h4class = $h4.attr('class');
var h4id = $h4.attr('id');
var h4tc = $h4.attr('translate-cloak');
var h4text = $h4.text();
$h4.replaceWith('<h1 ng-bind-html="'+ h4bind +'" class="'+ h4class +'" id="'+ h4id+'" translate-cloak="'+h4tc+ '">'+ h4text +'</h1>');
以下是解决方案:https://jsfiddle.net/h2jfu0e8/
$( document ).ready(function() {
$('h4').replaceWith('<h1>' + document.querySelector("h4").innerHTML + '</h1>');
});
真正取决于您最终要对元素做什么。如果您只想克隆具有当时状态的元素,那么jQueryclone()方法可以帮助保存一些代码。有关更多信息,请参阅:https://api.jquery.com/clone/
相关文章:
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在不传递此信息的情况下查找被调用的元素
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 如何在不影响其他元素的情况下扩展DIV
- 在不移动内部文本的情况下缩放元素的效果
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 如何在没有回调的情况下获取有关元素的信息
- Ajax:只在元素存在的情况下调用Ajax
- 是否可以在不重新渲染的情况下显示/隐藏父对象中的元素
- jQuery-如何在给定延迟的情况下从元素中删除类
- 在不引用文档的情况下使用AngularJS获取元素
- JavaScript-在不影响索引的情况下将元素插入数组
- 如何在不使用multipleparent()调用的情况下找到(元素表的)第一个祖先
- 是否可以在不创建svg对象的情况下创建捕捉元素?[snap.svg]
- 在没有大量回调函数的情况下在列表元素上循环播放同一动画
- 在不使用sort()的情况下获取HTML LI元素的副本
- 如何在不使用任何 html 输入/搜索元素的情况下读取本地客户端文本文件
- 如何在不丢失格式的情况下连续淡入() 元素文本的每个字符,包括嵌套元素
- 如何在不创建新元素的情况下修改 DOM 元素的位置
- 在不使用 CSS 的情况下,将元素与浏览器屏幕顶部保持设定的距离