我正在试图找出用“orange:”重命名“apple”的jQuery语句
<a id="alvin" href="http://www.camille.com"><ins class="xxx">Anna</ins>apple</a>
这可以轻松完成吗?
答案 0 :(得分:11)
我从ID中删除了#
,因为它不是有效的ID字符。
鉴于此,试试这个:
直播示例: http://jsfiddle.net/u49wy/
var $contents = $('#alvin').contents();
$contents[$contents.length - 1].nodeValue = 'orange';
.contents()
返回元素的所有子节点,包括文本节点。
然后代码抓取最后的元素节点(这是一个文本节点)并更新其nodeValue
,这是更新文本节点值的方法。
.contents()
- http://api.jquery.com/contents 答案 1 :(得分:6)
$('#alvin').contents().filter(function () {
return this.nodeType == 3;
})[0].nodeValue = "orange";
它通过过滤内容以便只保留文本节点,并将第一个nodeValue
更改为“橙色”来完成此操作。
答案 2 :(得分:1)
id="#alvin"
是无效语法,'#'用作jQuery选择器或CSS中的一部分。
对于这个非常有限的例子,将“apple”替换为“orange”我实际上只是阅读innerHTML
并重写它。我甚至没有使用jQuery。
window.onload = function() {
var alvin = document.getElementById('alvin')
alvin.innerHTML = alvin.innerHTML.replace('apple', 'orange');
}
我没有使用jQuery,因为jQuery没有一种干净的方法来选择杂散文本节点。那么如果我们在跨度中包装任何子文本节点呢?我们可以这样做:
$('#alvin').contents().filter(function() {
return this.nodeType == 3;
}).wrap('<span></span>').end();
通过这种方式,我们留下了结构:
<a id="alvin" href="http://www.camille.com"><ins class="xxx">Anna</ins><span>apple</span></a>
然后我们可以使用+
相邻选择器来获取它,就像这样 - ins+span
表示<span>
之后的<ins>
:
var elem = $('#alvin ins+span');
elem.text(elem.text().replace('apple', 'orange'));
答案 3 :(得分:0)
另一种方式(虽然不是很漂亮):
$("#alvin").html($("#alvin").html().replace(/apple$/,'orange'));
修改:在Apple结束时添加了$。谢谢Patrick。