如何在Child元素之前更改元素的Html

时间:2016-12-17 16:12:15

标签: javascript jquery html

假设我有以下div:

<div id = "master">
     "Random Text
     <span id = "unknown">...</span>
</div>

如果我不知道span的id,我将如何使用jQuery修改"Random Text"

请注意proposed duplicate的答案是javascript而不是jQuery。

4 个答案:

答案 0 :(得分:2)

使用节点类型属性查找文本节点

节点类型3用于文本节点。

http://www.w3schools.com/jsref/prop_node_nodetype.asp

您可以使用nodeValue属性设置文本节点元素的文本

&#13;
&#13;
var textNodeList = $("#master")
  .contents()
  .filter(function() {
    return this.nodeType === 3; //Node.TEXT_NODE
  });


textNodeList[0].nodeValue = "Not Random Text";
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id = "master">
     "Random Text
     <span id = "unknown">...</span>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

jQuery没有自己的文本节点方法。

仅使用jQuery的抽象方法,不需要知道或使用本机dom方法或属性

$('#master').html(function(){
   return $(this).children().clone(true);// only return elements, clone to preserve any possible event handlers
}).prepend('Some new text');

假设只有一个文本节点子节点为#master

答案 2 :(得分:-1)

你可以这样做:

var masterDiv = $('#master');
var text_to_change = masterDiv.childNodes[0];
text_to_change.nodeValue = 'new text';

这应该可行。

答案 3 :(得分:-1)

也许是这样的?

$('#unknown')[0].previousSibling.nodeValue = 'something else';

JSFiddle