Как работает jQuerys.text(), внутренне?
Я быстро попытался найти реализацию в источнике jQuerys, но нашел этот, который фактически не описывает его полностью.
Из источника 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 );
},
Кто-нибудь знает?
Разъяснение:
Я знаю, как его использовать. Я просто хочу знать, как получить текст элемента à la jQuery, когда jQuery не доступен.
Ответы
Ответ 1
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/
Ответ 2
var text = element.innerText || element.textContent;
Пример: http://jsfiddle.net/XnL7H/1/
Ответ 3
Он использует метод Sizzle 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://sizzlejs.com/
Ответ 4
Предполагая, что вы знаете, как получить элемент в JavaScript с помощью jQuery.
var el = document.getElementById("my-element");
И тогда вам просто нужно использовать два свойства, доступные для каждого элемента innerText
и innerHTML
. Итак, чтобы получить текст, который вы используете:
var text = el.innerText;
Чтобы получить HTML, выполните следующие действия:
var html = el.innerHTML;
Ответ 5
Если вы знаете разные createTextNode и createElement, вы можете понять, как работать с jquery.text.
текстовая функция создает текст DOM node. Браузер будет протачивать значение node в виде текста.