微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – jQuery的.text()如何在内部工作?

我很快尝试在jQuery的源代码中找到实现,但是只发现了 this,实际上并没有完全定义它.

从jQuery源

jQuery.fn.extend({
    text: function( text ) {
        if ( jQuery.isFunction(text) ) {
            return this.each(function() {
                return jQuery(this).text( text.call(this) );
            });
        }

        if ( typeof text !== "object" && text !== undefined ) {
            return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
        }

        return jQuery.getText( this );
    },

有人知道吗

澄清:
我知道如何使用它.当jQuery不可用时,我只想知道如何获取元素àla jQuery的文本.

解决方法

jQuery.fn.text可以用于3种不同的用途,因为您粘贴的源清楚地显示.您正在寻找的是第三个 – 返回元素的文本值.

jQuery使用jQuery.text()方法获取元素的文本值,jQuery.text指向Sizzle.getText()

jQuery.text = Sizzle.getText;

这里是getText函数的定义.

// Utility function for retreiving the text value of an array of DOM nodes
Sizzle.getText = function( elems ) {
    var ret = "",elem;

    for ( var i = 0; elems[i]; i++ ) {
        elem = elems[i];

        // Get the text from text nodes and CDATA nodes
        if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
            ret += elem.nodeValue;

        // Traverse everything else,except comment nodes
        } else if ( elem.nodeType !== 8 ) {
            ret += Sizzle.getText( elem.childNodes );
        }
    }

    return ret;
};

工作实例:http://jsfiddle.net/cBsDN/

原文地址:https://www.jb51.cc/jquery/154851.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐