更改元素的文本而不更改子元素

时间:2017-10-06 13:34:04

标签: javascript jquery html



$('button').click(function(){ $(this).prev('label').append('<b>ed</b>').text('Press');
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>Click<b>ed</b></label>
<button>Here</button>
&#13;
&#13;
&#13;

我想保留元素<b></b>或现有的任何元素更改.text()

我试图处理的步骤如下

.append('<b>ed</b>')首先我添加了新元素<b>;

在添加新元素后,我将文本更改为 Press .text('Press');

我尝试做的是复制添加的<b>ed</b>元素,然后更改文字.text('Press');,然后在更改text()后重新添加

所以它会像

var element = $(this).prev('label').clone('b');
$(this).prev('label').append('<b>ed</b>').text('Press'+element+'');

问题我一直得到元素值= [Object object]

4 个答案:

答案 0 :(得分:3)

只需使用domain: 'mydevdomain.com'方法,即可将所需文字显示为 HTML

.html()
$('button').click(function(){ $(this).prev('label').html('Press<b>ed</b>');
})

另一种解决方案:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>Click<b>ed</b></label>
<button>Here</button>

答案 1 :(得分:2)

以下是使用.text().append()的示例。请注意,.text()将完整替换元素的内容,因此最后使用.append()非常重要。

&#13;
&#13;
$('button').on('click', function() {
    var boldedElem = $(this).prev('label').find('b');
    $(this).prev('label').text('Press').append(boldedElem);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>Click<b>ed</b></label>
<button>Here</button>
&#13;
&#13;
&#13;

答案 2 :(得分:2)

要访问文本部分,您需要使用.contents()

有关详细信息,请参阅this answer and comments

&#13;
&#13;
$("#x").append("<b> pressed</b>")
       .contents().filter(function(){return this.nodeType == 3;}).first()
       .replaceWith("well done");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='x'>Press</div>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

查找此标签中的所有<b>,选择最后一个并使用html()修改其内容

$('button').click(function(){ 
var label = $(this).prev('label');
label.find('b').last().html('Press');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>Click<b>ed</b></label>
<button>Here</button>