J.C*_*cio 30 javascript jquery
我有这样一个元素:
<td>
<a>anchor</a>
[ some text ]
</td>
Run Code Online (Sandbox Code Playgroud)
我需要在jQuery中设置它的文本,而不删除锚点.
元素的内容可能按顺序变化(文本在之前或之后),实际文本是未知的.
谢谢
新的更新
这就是我使用的,只假设一个文本节点:
function setTextContents($elem, text) {
$elem.contents().filter(function() {
if (this.nodeType == Node.TEXT_NODE) {
this.nodeValue = text;
}
});
}
setTextContents( $('td'), "new text");
Run Code Online (Sandbox Code Playgroud)
Jua*_*des 38
尼尔的回答是我的建议.jQuery没有办法选择文本节点如何用jQuery选择文本节点?.
更改HTML结构将使最简单的代码.如果你不能这样做,你可以使用childNodes属性寻找类型3的节点(TEXT_NODE)
下面是一些示例代码,假设最后一个节点是您要编辑的节点.这是一种比替换td的整个内容更好的方法,因为在重新创建HTML时可能会丢失事件处理程序
$('a').click(() => console.log('<a> was clicked'))
$('#btn').click(() =>
$('.someClass').get(0).lastChild.nodeValue = " New Value");Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='someClass'>
<a href="javascript:void(0)">anchor</a> [ some text ]
</div>
<button id='btn'> Change text without losing a tag's handler</button>Run Code Online (Sandbox Code Playgroud)
如果可以将文本放在一个范围内:
<td id='someID'>
<a>anchor</a>
<span>[ some text ]</span>
</td>
Run Code Online (Sandbox Code Playgroud)
你可以做:
$('td#someID span').text('new text')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21972 次 |
| 最近记录: |