Javascript 链接这个jquery表达式

Javascript 链接这个jquery表达式,javascript,jquery,Javascript,Jquery,有没有办法链接这个jQuery表达式或改进它?我真正想做的就是把“我的文本”改成“新文本” HTML: 应该很好!始终可以链接使用相同选择器的方法 一个简单的方法是用一个span来包装我的文本。然后可以执行$('#myDiv span').first().text('newtext') 至于链接: 这项工作: var element = $("#myDiv"); var buttons = element.children().detach(); element.text("new Text")

有没有办法链接这个jQuery表达式或改进它?我真正想做的就是把“我的文本”改成“新文本”

HTML:


应该很好!始终可以链接使用相同选择器的方法

一个简单的方法是用一个span来包装我的文本。然后可以执行
$('#myDiv span').first().text('newtext')

至于链接:

这项工作:

var element = $("#myDiv");
var buttons = element.children().detach();
element.text("new Text").append(buttons);

您可以随时制作一个插件来执行您想要的操作:

(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')

Fiddle:

.contents()
获取所有子节点,包括文本节点。获取第一个节点并更改
textContent
属性

$('#myDiv').contents()[0].textContent = "new text";
如果你需要变得更复杂,你可能想看看,它也提供了各种不同的选择


jQuery主要关注于操作元素节点(
nodeType
1),而不是在元素节点上下文之外操作文本节点。有时,最好的方法是下拉到“原始JavaScript”:)

为什么不将文本包装成
?那么您只需要:


$(“#myDiv p”).text(“新文本”)

根本不需要麻烦jQuery。。。对于这样的简单任务,纯JavaScript要快得多

var element =  document.getElementById('myDiv');

element.innerHTML = element.innerHTML.replace('my text','new text');

@Razor Storm-您的第一个答案将更改两个
元素中也包含按钮文本的文本。哎呀,我更改了答案以解决此问题。我喜欢您的解决方案,但我担心浏览器对textContent和innetText的支持。(+1)无论如何。我可能会使用类似这样的方法来检索text var text=x.innerText | | x.textContentyeah,您也需要将其熨平:)
(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').contents()[0].textContent = "new text";
var element =  document.getElementById('myDiv');

element.innerHTML = element.innerHTML.replace('my text','new text');