jQuery, HTML elemanlarının data-* attribute değerlerine kolayca erişebilmemizi sağlar. Bu özellik, elemanlarla ilgili ek bilgi depolamak için oldukça kullanışlıdır. Özellikle, bir sayfadaki belirli HTML elemanlarından veri almak ve bu verileri işlemek istiyorsanız jQuery'nin data() fonksiyonu oldukça işinize yarayacaktır.
Bu yazıda, bir HTML sayfasındaki butonlara tıklandığında, ilgili div elemanlarından data-* attribute'lerini nasıl çekeceğimizi ve tüm div elemanlarının verilerini topluca nasıl alacağımızı inceleyeceğiz. Ayrıca, kodlarımızı daha temiz ve kısa hale getirmeye odaklanacağız.
Örnek Senaryo: Ürün Bilgilerini Alma
Diyelim ki bir sayfanızda ürün bilgilerini gösteren div elemanları ve her bir ürün için bir "Veri Al" butonu var. Ayrıca, sayfadaki tüm ürünlerden toplu olarak veri çekmek için bir genel buton da bulunuyor.
Aşağıda, bu örnek senaryoya uygun HTML yapısını inceleyelim:
<div>
<div class="product" data-id="3234" data-product-index="1" data-name="Product 1">Some Content</div>
<button type="button" class="getDataBtn">Get Data on div</button>
</div>
<div>
<div class="product" data-id="423" data-product-index="2" data-name="Product 2">Some Content</div>
<button type="button" class="getDataBtn">Get Data on div</button>
</div>
<div>
<div class="product" data-id="3234" data-product-index="3" data-name="Product 3">Some Content</div>
<button type="button" class="getDataBtn">Get Data on div</button>
</div>
<br><br>
<button type="button" class="getAllDataBtn">Get Data on all div</button>Burada her bir product sınıfına sahip div elemanında ürünle ilgili data-id, data-product-index ve data-name gibi bilgileri saklıyoruz. Her ürün için bir buton, ayrıca tüm ürünlerin verisini almak için genel bir buton bulunuyor.
jQuery ile Tek Bir Üründen Veri Almak
Bir butona tıkladığınızda, ilgili div elemanındaki data-* attribute değerlerini çekmek için şu jQuery kodunu kullanabiliriz:
$(".getDataBtn").click(function () {
var divData = $(this).siblings(".product").data();
console.log(divData);
});- Açıklama:
.getDataBtnsınıfına sahip butona tıklandığında,.siblings(".product")ile aynı kapsayıcı içindekiproductsınıfına sahipdivelemanına ulaşılır. Ardından,.data()fonksiyonu ile budivelemanındaki tümdata-*attribute'leri bir nesne olarak alınır vedivDatadeğişkenine atanır. Bu değişkeniconsole.log()ile ekranda görüntüleyebilirsiniz.
Tüm Ürünlerden Veri Almak
Sayfadaki tüm product sınıfına sahip div elemanlarının data-* attribute'lerini toplu olarak almak için ise şu jQuery kodunu kullanabiliriz:
$(".getAllDataBtn").click(function () {
var allDivData = [];
$(".product").each(function () {
allDivData.push($(this).data());
});
console.log(allDivData);
});- Açıklama:
.getAllDataBtnsınıfına sahip butona tıklandığında, sayfadaki tümproductsınıfına sahipdivelemanları.each()döngüsü ile teker teker işlenir. Her birdivelemanından.data()fonksiyonu ile alınan veriler,allDivDataadlı diziye eklenir. Son olarak, bu diziconsole.log()ile ekranda görüntülenir.
Kodları Sadeleştirme
jQuery'nin sağladığı esneklik sayesinde kodlarımızı daha kısa ve sade hale getirebiliriz. Örneğin:
// Tek bir üründen veri çekme
$(".getDataBtn").click(function () {
console.log($(this).siblings(".product").data());
});
// Tüm ürünlerden veri çekme
$(".getAllDataBtn").click(function () {
console.log($(".product").map(function () { return $(this).data(); }).get());
});- Sadeleştirme Açıklaması:
- Tek bir üründen veri alırken,
divDataadlı geçici bir değişken kullanmak yerine, doğrudanconsole.log()içine veriyi yazdırabiliriz. - Tüm ürünlerden veri alırken ise
.each()yerine.map()kullanarak daha kısa bir yazım elde edebiliriz..get()fonksiyonu ile jQuery nesnesini saf JavaScript dizisine çeviririz.
- Tek bir üründen veri alırken,
Sonuç
Bu yazıda, jQuery ile HTML elemanlarından data-* attribute'lerini çekmenin ne kadar kolay olduğunu gördük. data() fonksiyonu ile bu verilere ulaşabilir ve istediğiniz şekilde işleyebilirsiniz. Kodlarımızı sadeleştirerek, daha kısa ve okunabilir bir yapı elde edebiliriz. Bu tip işlemler, web projelerinizde veri manipülasyonunu oldukça kolaylaştırır.
Umarım bu yazı jQuery'de data-attribute ile çalışma konusunda size yardımcı olmuştur!