jQuery text Node Object to string

时间:2012-03-08 10:32:54

标签: javascript jquery text

我正在使用此代码:

/**
 * Get Text Nodes from an Element
 * Returns and object unless number is passed in
 * Numbers is 0 based
 */
(function( $ ) {
$.fn.textNodes = function(number) {
    var nodes = jQuery(this).contents().filter(function(){
        return this.nodeType == 3;
    });
    if(jQuery.isNumber(number)){
        return nodes[number];
    }
    return nodes;
};
})( jQuery );

它用于从html中抓取文本节点

例如:

<div>
    <span>Testing</span>
    What is this?
</div>

我正在寻找What is this?

这样可行,因为我可以执行console.log并在控制台中查看结果。

但是当我尝试在输入字段中使用结果时,它会给我:[object Text]

如何将结果用作字符串值?

我已经尝试过toString()但是得到了相同的结果,除非我错过了什么。

3 个答案:

答案 0 :(得分:5)

使用nodeValue属性:

$("#yourInputField").val(yourTextNode.nodeValue);

答案 1 :(得分:2)

当您需要实际使用文本时,您会收到文本节点作为DOM对象,这是正确的行为:textContentnodeValue

请参阅jsFiddle

答案 2 :(得分:2)

您的代码有效,但它没有采用jQuery之美。怎么样:

(function($) {
    $.expr[':'].textnode = function(element) {
        return element.nodeType == 3;
    }

    $.valHooks["#text"] = { get: function(elem) {
        return $.trim(elem.nodeValue);
    }}

})(jQuery)

以这种方式使用它:

lastText = $("div").contents(":textnode:last").val()

http://jsfiddle.net/YXjEB/