Not : Bu API JQuery v1.9'da kaldırıldı, yerine .on()
metodu kullanınız.
Bu metod sayfa içeriğinde dinamik olarak değişimler olduğunda olay
işleyicilerin kullanımını kolaylaştıran şekilde document
elemanında delegasyon
tipi olay işleyici eklemeye yarar. Direk ve delegasyon yoluyla olay tanımları için
.on()
metoduna bakınız.
.live()
metodunu tekrar düzenlemeler ile nasıl dönüştüğü şöyle sıralanır.
Parametre events
olay isimlerinden veya namespace değerlerinden oluşabileceği gibi
olay adı stringi ve olay işleyici fonksiyonlardan oluşan bir nesne de olabilir. Parametre
data
istenirse kullanılmayabilir. Örneğin aşağıdaki 3 metod çağrısı fonksiyonel
olarak eşittir.
JQuery yeni versiyonlarında dezavantajları olmayan daha iyi metodlar olduğundan .live()
metodu kullanımı tavsiye edilmez. Aşağıda .live()
kullanımının sebep olduğu
sorunlar sıralanıyor.
.live()
metodunu çağırmadan önceki jQuery seçicisi tarafından getirilen
elemanlar büyük dökümanlarda zaman sorunu üretebilir.
$( "a" ).find( ".offsite, .external" ).live( ... );
geçerli değildir
ve beklendiği gibi çalışmaz.
.live()
olayları document nesnesine bağlandığı için olaylar
işlenmeden önce en uzun ve meşakkatli yoldan geçerler.
click
olayı birçok eleman
tarafından document body'ye aktarılmadığından aşağıdakilerden birini çalışmadan
.live()
metodu kullanılamaz.
a
ya da button
gibi doğal olarak tıklanan elemanlar
kullanın. Bu ikisi de olayı üstü olan document
'e aktarır.
document.body
altındaki elemanlar için .on()
ve
.delegate()
kullanın.
click
olayını üst elemana aktarmasını istediğiniz elemana
cursor: pointer;
CSS stili verin. Ama bu durumda elemanda
kopyala-yapıştır imkanının olamayacağını ve dokunulunca elemanın parlak
olacağını unutmayın.
event.stopPropagation()
olayın yayılmasını önlemekte işe yaramaz, çünkü kod oraya geldiğinde olay zaten
document
'e kadar yayılmıştır.
.live()
metodunun diğer olay metodlarıyla etkileşimi bazen ilginç
olabilir. Örneğin $( document ).off( "click" )
komutu .live()
ile tanımlanan tüm click
olaylarını iptal eder.
Hala .live()
kullanan siteler için bu versiyona göre listesi faydalı
olabilir.
.live()
ile bağlanan olay işleyicilerin daha
yukarı yayılmasını önlemek için olay işleyiciden false
değeri
dönülür. .stopPropagation()
metodu bunlarda işe yaramaz.
.live()
metodu yayılan tüm JavaScript olayları gibi
kullanıcı tanımlı olayları da destekler. Ayrıca yayılmayan change
,
submit
, focus
ve blur
gibi olayları da
destekler.
click
,
dblclick
, keydown
, keypress
, keyup
,
mousedown
, mousemove
, mouseout
, mouseover
,
ve mouseup
.
Bir olayı iptal et ve yukarı yayılmasına da false değeri dönerek engel ol.
Sadece default aksiyonu preventDefault
fonksiyonu kullanarak iptal et.
.live()
ile kullanıcı tanımlı olay tanımla.
Bir nesne ile birçok olay ve olay işleyici tanımla. Not: .live()
sayesinde
belgede bulunan ve sonradan eklenecek tüm paragraflara click
, mouseover
ve mouseout
olay işleyicileri ekleniyor.
.
.