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
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);
Nasıl jQuery kullanarak metin seçimi d...
Nasıl kimliği bir nokta içeriyorsa jqu...
Nasıl giriş metin jQuery kullanarak de...
nasıl jQuery ile metin kapma boşluk şe...
Nasıl metin uzunluğu bir textbox jQuer...