Her ne kadar jQuery library’sini pek sevmesem de, ne kadar yavaş olsa da, DOM Manipulating, AJAX gibi işlemler için kullanmak zorunda kalıyorum, kalıyoruz. Aslında sloganları olan write less, do more -az yaz, daha fazlasını yap- felsefesini gerçekledikleri doğru, fakat bu kadar yavaş çalışmasa çok daha iyi olacak. Bu konuyu ilerleyen zamanlar da burada yazmak istiyorum ama şimdi bunları bir kenara bırakıp 1.6 sürümünde gelen yeniliklerden bahsedeyim.Öncelikle jQuery 1.6 3 Mayıs 2011 tarihinde çıkarıldı. Download linkleri…jQuery 1.6 -jQuery CDN-jQuery 1.6 Minified -jQuery CDN-jQuery 1.6 Minified -Microsoft CDN-jQuery 1.6 Minified -Google CDN-Ve gelelim jQuery 1.6 daki yeniliklere… Öncelikle bir çok bug fix yaptıklarını ve performans konusunda gelişme kaydettiklerini söylüyorlar. Yazımın sonundaki performans grafiklerinden performans konusundaki farklılıkları görebiliriz.

.attr() .prop() .removeProp()

jQuery 1.6 sürümünde element ler için attribute ve property leri getiren fonksiyonları ayırma kararı almışlar. Aradaki farkı en iyi anlatan örnek ise
Yukarıdaki kod satırına göre id si check olan element in DOM daki checked property si true fakat checked attribute ü "checked" string ine eşittir.
jQuery 1.6 öncesinde bu tarz bir element üzerindeki .attr('checked') değeri true olarak dönüyordu fakat 1.6 da "checked" olarak dönüyor. .prop() ise true olarak dönmektedir.
Fakat 1.6 ve öncesi versiyonlar için .is(':checked') fonksiyonu her zaman doğru sonucu dönmektedir.
NOT: jQuery 1.6 da .attr() her zaman element deki attribute ün ilk değerini dönecektir. Örneğin yukardaki kod satırındaki gibi bir checkbox ın "checked" attribute ünün ilk değeri değeri "checked" olduğu için, checkbox seçili olmadığı durumda bile .attr('checked') "checked" olarak dönecektir.

Boolean Attribute ler

jQuery 1.6 da attr() fonksiyonu için boolean değerler kullanabileceğiz.
$(‘#checkbox’).attr(‘checked’, true);$(‘#checkbox’).attr(‘checked’, false);

.promise()

Bir element seti üzerindeki herhangi işlem bittiği anda, belirttiğiniz fonksiyonun çalışacağını garantileyen bir method. Çalışan örneğini adresinde görebilirsiniz.$(‘button’).bind(‘click’, function() {$(‘p’).append(‘Started!’);$(‘div’).each(function(i) {$(this).fadeIn().fadeOut(1000 * (i+1));});$(‘div’).promise().done(function() {$(‘p’).append(‘Finished!’); // .each() bittiği an çalışacak});});

Camel Case Data Attribute İsimlendirmesi

jQuery 1.5 de herhangi bir elementde bulunan data- ile başlayan attribute leri kolayca alabilme özelliği eklenmişti. Örnek olarak aşağıdaki yapıda üzerinde ürün ile ilgili özellikleri tutan bir div imiz olduğunu varsayalım.


Ve bu element üzerinden data() fonksiyonunu çalıştırdığımız da 1.6 öncesinde dönen object içerisindeki property isimleri aynen yazdığımız gibi dönüyordü. 1.6 ile dönen object içindeki property isimleri camelCase olarak dönüyor. Bu tarz bir değişikliğe gitmelerinin nedeniyse, na uyumluluk sağlamak. Aşağıdaki kod satırı 1.6 ve öncesindeki farkı gösterecektir.var data = $(‘#productContainer’).data();// jQuery 1.6 öncesinde data değişkeni{product-id: “426”,available-stock: “6”,product-name: “Corsair 4GB 1666Mhz DDR3 Ram”}// jQuery 1.6 da data değişkeni{productId: “426”,availableStock: “6”,productName: “Corsair 4GB 1666Mhz DDR3 Ram”}

Focus Selector

jQuery 1.6 ile anlık olarak focus olunmuş elementi seçmek için :focus selector ü eklemişler.var focusedElement = $(“input:focus”);
Yanlız $(document.activeElement) hala daha hızlı çalışıyor.

jQuery.holdReady(true)

holdReady fonksiyonu jQuery ready event ini beklemeye yarıyor. Bunun en kullanışlı olacağı yer örnekten de anlaşılacağı gibi birbirlerine bağımlı olan dinamik script leri yüklerken senkron hareket ermek.$.holdReady(true);$.getScript(“anotherScript.js”, function() {$.holdReady(false);// bu satırdan itibaren ready event i calışacaktır.});

Dinamik .css() Değerleri

jQuery 1.6 ile gelen güzel özelliklerden birisi de .css() içerisine yazdığımız değeri, elementin sahip olduğu değer üzerine ekleyerek kullanabilmek.// elementin left değerinine 10px daha ekliyoruz$(‘#element’).css(‘left’, ‘+=10px’);

Object ler için map()

jQuery 1.6 ile array lerde olduğu gibi object ler içinde map() i kullanıyor olabileceğiz.var dimensions = {width: 10,height: 15,length: 20};dimensions = $.map(dimensions, function(value, index) {return value * 2;});console.log(dimesions); // [20, 30, 40]

Performans

Performans konusunda jQuery den pek hoşlanmadığımı belirtmiştim. Bazı şeyleri bu sürümde biraz daha hızlandırmışlar. Grafiklere bakarak nelerin iyileştiğini görebiliriz.Test Linkleri: .attr()    .val()    .data()