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

  • emimusic

    emimusic

    10 Mart 2006
  • IGN

    IGN

    19 EYLÜL 2006
  • MandMEvangelists

    MandMEvangel

    28 Ocak 2008