我正在使用此代码:
/**
* 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()但是得到了相同的结果,除非我错过了什么。
答案 0 :(得分:5)
使用nodeValue属性:
$("#yourInputField").val(yourTextNode.nodeValue);
答案 1 :(得分:2)
当您需要实际使用文本时,您会收到文本节点作为DOM对象,这是正确的行为:textContent
或nodeValue
。
请参阅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()