Javascript 将jQuery文本节点对象转换为字符串
我正在使用以下代码:Javascript 将jQuery文本节点对象转换为字符串,javascript,jquery,text,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
/**
* 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>
测试
这是什么?
我在找这是什么?
这是可行的,因为我可以创建一个console.log并在控制台中查看结果
但当我尝试在输入字段中使用结果时,它会告诉我:[对象文本]
如何将结果用作字符串值
我尝试了toString(),但结果是一样的,除非我遗漏了什么。使用属性:
$("#yourInputField").val(yourTextNode.nodeValue);
当需要实际的文本使用时,您可以将文本节点作为DOM对象接收,这是正确的行为:
textContent
或nodeValue
请参阅。您的代码可以工作,但它没有使用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()
textContent
在旧浏览器(包括IE<9)中未实现。坚持使用nodeValue
或data
,这两种浏览器在所有主要浏览器中都可以使用。这是我问题的正确答案。我喜欢thg435的旋转。谢谢