链接这个jquery表达式

时间:2011-08-03 16:13:23

标签: javascript jquery

有没有办法链接这个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);

6 个答案:

答案 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');

http://jsfiddle.net/xAhA6/8/

答案 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')

,那么您可以将其他方法链接到该方法

小提琴:http://jsfiddle.net/maniator/DQtjE/

答案 5 :(得分:0)

为什么不将文字换成<p>?那你只需要:

$("#myDiv p").text("new Text");