避免在.text()上删除DOM元素的方法
Approach to avoid DOM elements from being removed on .text()
我有一个下面的锚元素,其中包含一个较小的图像。
<a href="#" id="myButton" class="BtnClass">
<img src="Images/arrow2.png"/>
</a>
从Javascript中,我设置了"myButton"元素的文本使用,
$("#myButton").text("Submit Form");
我理解.text()
将设置"myButton"的内容,并将删除现有的img
元素。
我想了解避免从DOM中删除img
元素的最佳方法是什么。
p。我提到一个简单的方法作为答案。
我们可以像下面这样添加一个额外的span元素,
<a href="#" id="myButton" class="BtnClass">
<span id="textHere"></span> <!--New Span-->
<img alt="IMG NOT AVAIABLE" src="Images/arrow2.png"/>
</a>
并将文本设置在添加的span上。
$("#textHere").text("Submit Form");
我认为更灵活的方法是使用CSS背景而不是img
标签:
#myButton {
background: url(Images/arrow2.png) no-repeat right center;
}
HTML: 和
<a href="#" id="myButton" class="BtnClass">Submit</a>
在这种情况下,您不必担心文本,可以继续使用$("#textHere").text("Submit Form");
。
检查下面的小演示。
setTimeout(function() {
$('#myButton').text('Submit Form');
}, 2000);
#myButton {
background: #888 url(https://cdn3.iconfinder.com/data/icons/google-material-design-icons/48/ic_keyboard_arrow_right_48px-20.png) no-repeat right center;
padding: 5px 20px 5px 10px;
border-radius: 4px;
border: 1px solid #111;
color: #FFF;
font-family: Arial;
text-decoration: none;
}
#myButton:hover {
background-color: #AAA;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" id="myButton" class="BtnClass">Submit</a>
尝试像这样将文本附加到a标签上:
$(document).ready(function(){
$("#myButton").append('Submit Form');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" id="myButton" class="BtnClass">
<img src="https://googledrive.com/host/0B3_2aPWXzW1LeDhndmRjRXhWUHc"/>
</a>
另一个解决方案是修改第一个textNode值。在这种情况下,您不需要修改按钮的HTML结构。
setTimeout(function() {
var button = $('#myButton')[0];
// Create text node if it's not the first child of the button
if (button.firstChild.nodeType !== 3) {
button.insertBefore(document.createTextNode(''), button.firstChild);
}
// Change text node value
button.firstChild.nodeValue = 'Submit Form';
}, 2000);
#myButton {
background: #888;
padding: 5px 10px;
border-radius: 4px;
border: 1px solid #111;
color: #FFF;
font-family: Arial;
text-decoration: none;
}
#myButton img {vertical-align: bottom; display: inline;}
#myButton:hover {
background-color: #AAA;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" id="myButton" class="BtnClass">
<img src="https://cdn3.iconfinder.com/data/icons/google-material-design-icons/48/ic_keyboard_arrow_right_48px-20.png"/>
</a>
相关文章:
- 如何从DOM中删除Aloha编辑器
- 如何修复:当javascript更改DOM时,iOS会删除CSS文件
- 从dom中删除任何元素后,Touchmove事件停止触发
- IE9-添加和删除DOM元素会破坏父keydown事件
- 如何使用jQuery从DOM中删除所有单选按钮元素
- 如何在删除脚本后刷新/重新编译dom中的脚本
- JQuery.删除DOM树中的上一个同级
- 在jquery中是否有任何方法或位置可以编写从Dom中删除页面后调用的方法
- 如何从DOM(KnockoutJS)中删除$data、$parent等
- 从 DOM 中删除/删除 Javascript 用户定义的数组
- 从 DOM 数组中删除 DOM 对象
- 通过删除其相关的 DOM 存在来重新初始化 jQuery 插件
- 在 IE 中从 DOM 中删除选项时,滚动选择元素会跳到顶部
- 如何在单击按钮时删除 DOM 元素
- 如何删除DOM事件处理程序的重复JavaScript代码
- 删除在加载dom之后创建的动态元素
- 在p5-dom上单击提交按钮后,我如何删除该按钮
- 删除的DOM元素仍然显示在移动safari(iOS 5.1)中
- Angular指令删除只调用一次的DOM元素
- chrome javascript dom删除iframe背景图像