.text()影响h1中的html元素

时间:2017-03-28 17:27:23

标签: javascript jquery html glyphicons

我有以下标记:

string str = "abc";
dt.Columns.Add("ColumnName").Expression = "'" + str + "'";

我想要做的是当我双击一个h1来改变它的文字。 为此,我在文档就绪函数

中编写了以下代码
New-Object -ComObject "ArSystem.User"

然而,这段代码不是仅仅更改h1的文本而是删除了glyphicon span。 任何想法为什么? 另外请注意,我无法更改标记

5 个答案:

答案 0 :(得分:2)

使用$(this).text().html()是正确的语法),您正在更改整个h1内容,包括其中的字形。

如果你想保留字形(带有跨度),请将其与h1分开,如下所示:

<h1>A text </h1><span class="createTask glyphicon glyphicon-plus"></span>

或者,按照您的要求 - 不更改标记:

$(this).html(newTitle + "<span class='createTask glyphicon glyphicon-plus'>");

答案 1 :(得分:2)

您需要更新h1中的第一个文本节点:$(this).contents().get(0).nodeValue = newTitle;

$("h1").on("dblclick", function() {
  var newTitle = prompt("Enter a new title");
  if (newTitle) {
    $(this).contents().get(0).nodeValue = newTitle;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<h1>A text <span class="createTask glyphicon glyphicon-plus"></span></h1>

答案 2 :(得分:1)

h1元素中添加另一个范围,然后再添加

<h1>
    <span id="text">A text </span>
    <span class="createTask glyphicon glyphicon-plus"></span>
</h1>

$("h1").on("dblclick",function() {
    var newTitle = prompt("Enter a new title");
    if (newTitle){
        $(this).find('#text').text(newTitle);
    }

})

答案 3 :(得分:1)

您可以使用Node.previousSibling获取SPAN DOM元素的上一个兄弟,然后可以设置其nodeValue

$("h1").on("dblclick", function() {
  var newTitle = prompt("Enter a new title");
  if (newTitle) {
    var span = $(this).find('span').get(0);  //get the DOM element
    span.previousSibling.nodeValue = newTitle;
  }

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<h1>A text <span class="createTask glyphicon glyphicon-plus">+++++</span></h1>

答案 4 :(得分:1)

.text()用指定的文本替换元素的内容。 由于图标跨度在元素内部,因此将被替换 您可以直接定位文本节点并替换其文本。

this.firstChild.nodeValue = newTitle;