jQuery текстовый узел Объект в строку - PullRequest
4 голосов
/ 08 марта 2012

Я использую этот код:

/**
 * 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 ]

5 голосов
/ 08 марта 2012

Используйте свойство nodeValue :

$("#yourInputField").val(yourTextNode.nodeValue);
2 голосов
/ 08 марта 2012

Ваш код работает, но он не использует красоту 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/

2 голосов
/ 08 марта 2012

Вы получаете текстовый узел в виде DOM-объекта, который имеет правильное поведение, когда вам нужно фактическое использование текста: textContent или nodeValue.

См. jsFiddle .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...