有没有办法链接这个jQuery表达式或改进它?我真正想做的就是将“我的文字”改为“新文本”。
HTML:
<div id="myDiv">
my text
<span>button 1</span>
<span>button 2</span>
</div>
使用Javascript:
var element = $("#myDiv");
var buttons = element.children().detach();
element.text("new Text");
element.append(buttons);
答案 0 :(得分:2)
var element = $("#myDiv");
var buttons = element.children().detach();
element.text("new Text").append(buttons);
应该工作正常!您始终可以链接使用相同选择器的方法。
答案 1 :(得分:2)
.contents()
获取包括文本节点在内的所有子节点。获取第一个节点并更改textContent
属性。
$('#myDiv').contents()[0].textContent = "new text";
如果您需要变得更复杂,您可能需要查看Karl Swedberg's Text Children plugin,它也提供了各种不同的选项。
jQuery主要专注于操作元素节点(nodeType
1),而不是在元素节点上下文之外操纵文本节点。有时最好的方法是下拉到“原始JavaScript”:)
答案 2 :(得分:1)
一种简单的方法是用跨度包装我的文本。然后你可以$('#myDiv span').first().text('new text');
关于链接:
这有效:
var element = $("#myDiv");
var buttons = element.children().detach();
element.text("new Text").append(buttons);
答案 3 :(得分:1)
根本不需要打扰jQuery ...简单的JavaScript对于简单的任务来说要快得多。
var element = document.getElementById('myDiv');
element.innerHTML = element.innerHTML.replace('my text','new text');
答案 4 :(得分:0)
你总是可以制作一个插件来做你想做的事情:
(function($){
$.fn.changeText = function(newText) {
return this.each(function() {
var element = $(this);
var divs = element.children().detach();
element.text(newText).append(divs);
});
};
})(jQuery);
//use it like so:
$('#myDiv').changeText('new text');
如果您想继续操纵$('#myDiv')
答案 5 :(得分:0)
为什么不将文字换成<p>
?那你只需要:
$("#myDiv p").text("new Text");