SORU
18 Kasım 2008, Salı


Nasıl jQuery ile metin düğümleri seçerim?

Bir elementin tüm alt metin düğümlerini almak için, DV topluluğu istiyorum. Bunu yapmanın en iyi yolu nedir?

CEVAP
9 Aralık 2010, PERŞEMBE


bu bir WordPress kullanmak için uygun bir işlevi yok. Tüm alt öğeleri ancak metin düğümleri verir find(), sadece alt düğümler verecek ama metin düğümleri içerir contents(),, birleştirmek gerekiyor. Buldum:

var getTextNodesIn = function(el) {
    return $(el).find(":not(iframe)").addBack().contents().filter(function() {
        return this.nodeType == 3;
    });
};

getTextNodesIn(el);

Not: Eğer jQuery 1.7 veya daha önceki bir sürümü kullanıyorsanız, yukarıda çalışmaz kod. Bunu düzeltmek için, andSelf() 12 *değiştirin. andSelf() 1.8 itibaren addBack() lehine önerilmiyor.

Bu biraz verimsiz göre saf DOM yöntemleri ve yer ugly workaround for jQuery's overloading of its contents() function (teşekkürler @rabidsnail açıklamalarda şu ki işaret için), yani burada olmayan bir WordPress kullanmak çözüm kullanarak basit bir özyinelemeli işlevi. Ya metin düğümleri boşluk olmasın includeWhitespaceNodes parametre kontrolleri çıkış dahil (jQuery otomatik olarak filtrelenir.

Güncelleme: includeWhitespaceNodes falsy olduğunda hata Düzeltildi.

function getTextNodesIn(node, includeWhitespaceNodes) {
    var textNodes = [], nonWhitespaceMatcher = /\S/;

    function getTextNodes(node) {
        if (node.nodeType == 3) {
            if (includeWhitespaceNodes || nonWhitespaceMatcher.test(node.nodeValue)) {
                textNodes.push(node);
            }
        } else {
            for (var i = 0, len = node.childNodes.length; i < len;   i) {
                getTextNodes(node.childNodes[i]);
            }
        }
    }

    getTextNodes(node);
    return textNodes;
}

getTextNodesIn(el);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bigky226

    bigky226

    11 HAZİRAN 2006
  • oHeymarvin

    oHeymarvin

    11 Temmuz 2013
  • RFS Dan

    RFS Dan

    22 Temmuz 2014