adsense

30 Temmuz 2013 Salı

jQuery: Çocuk Elemanları Olmadan Metni Almak

Normal şartlarda bir nesnenin içindeki metni almak için .text() metodunu kullanırız.. Ancak o nesne içerisinde çocuk elemanlar olursa, onlarında değerlerini almış oluruz.. Fakat her zaman bunu istemeyebilir, sadece o nesne içindeki çocuk elemanları olmadan metnin değerini almak isteyebiliriz. Peki bu durumda ne yapmamız gerekir?

Öncelikle olası bir senaryo hazırlayalım.. Şöyle bir html yapımız olsun..

<div class="text">
    ben burayı almak istiyorum
    <p>burayı değil!</p>
</div>
1234


Ve bunun değerine ulaşmak için uygulayacağımız jquery kodu ise şöyle olacaktır;

var text = $('.text').text();
1


Şimdi amacımıza uygun olarak jquery kodlarını tekrardan düzenleyelim..

$('.text')
.clone() // nesneyi çoğalt
.children() // nesne içindeki çocuk elemanları seç
.remove() // çocuk elemanlarını kaldır
.end() // tekrar nesneye geri dön
.text(); // kalan metnin değerini al
123456


Neden .clone() kullandık?



Aslında onu kullanmadan da aynı sonucu alıyoruz.. Ancak bu sefer orjinal nesneye zarar veriyoruz, bu yüzden kopyası üzerinden işlemimizi gerçekleştiriyoruz. Ve böylece amacımıza uygun bir sonuç elde ediyoruz :) Şimdi isterseniz bunu basit bir eklenti haline getirelim..

jQuery.fn.sadeceMetin = function() {
    return $(this).clone().children().remove().end().text();
};
123


Artık şöyle kullanabiliriz;

var text = $('.text').sadeceMetin();
alert( text );
12

Hiç yorum yok:

Yorum Gönder