jQuery'nin nimetlerini severek izliyor ve kullanıyoruz. jQuery kütüphanesini kullanarak geliştirilmiş onlarca eklenti de işimizi daha da kolay ve sevimli hale getiriyor.
Ancak, diğer eklentiler ile jQuery'nin baz fonksiyonlarını aynı sayfa içinde kullanmak istediğimizde, sayfaya çağırma sırasına bağlı olarak çakışıp, birbirlerini ezmelerine ve işlevsiz hale getirmelerine şahit oluyoruz.
Ben bu durumlardan biri olan jQuery ve Lightbox çakışmasının çözümünden bahsetmek istiyorum.
Başınıza henüz gelmemiş olabilir ama jQuery ile ilgilenen birinin mutlaka yaşayacağı bir problem olduğundan eminim.
Kodunuzu aşağıdaki şekilde düzenlerseniz sorununuz ortadan kalkacaktır.
(Kısaca sorun: Lightbox ile imajlarınızı gösterirken, show(), hide()... gibi sayfa içinde kullanmak istediğiniz diğer jQuery fonksiyonlarının çalışmaması.)
Çakışmalarla ilgili jQuery'nin kendi sayfasında daha detaylı bilgi bulabilirsiniz.
Lightbox ile ilgili bilgi ise burada.
Aşağıdaki hiyerarşi ve işaretleme şeklini kullanmanız sorununuzu çözecektir.
|
|
önceki yazı Jquery de hızınıza hız katın -1 |
sonraki yazı Delphi e-mail gönderimi |
Bu çakışma olayına çok sinir oluyorum. Hele sayfada birkaç eklentiyi birarada kullanmaya kalktığım zaman herşey birbirine karışıyor.
Bu tarz sorunların genel bir çözümü(nü bilen) varsa lütfen...
bildiğim kadarıyla jQuery.noConflict(); sadece ligthbox için değil diğer tüm javascript uygulamalarında çakışmayı engellemek amacıyla kullanılıyor. Denemesi bedava :)
Javascript kütüphanelerinin çakışmasının sebebi kullandıkları global değişkenlerdir.
jQuery ve Prototype kendisini $ değişkenine atamaya çalışır bu sebeple iki kütüphane en popüler çakışan kütüphanelerdir.
jQuery.noConflict derseniz, jQuery kendini $ değişkenine atamaktan vazgeçer, $ yerine jQuery yazarak ulaşmanız gerekir, yalnız bu durumda birlikte kullandığınız eklentilerde sorun yaşayabilirsiniz. Çünkü jQuery için eklenti yazanlar bu durumu ne yazık ki pek düşünmezler ve jQuery'nin $ değişkeninde bulunduğunu kabul ederler.
Ben hiç böyle bir sorun yaşamadım ile en önce jquery.js yi çağırınca hiçbir sorun olmuyor.
Kısaca size şu şekilde açıklayayım çakışma işleminin olmaması için jQuery de en sağlıklı ve kesin çözüm şudur.
Ben genellikle ve hatta tüm kodlamalarımda $.('div') şeklinde kullanım yapmıyorum, onun yerine jQuery.('div') şeklinde yazım işlemi yaparsak diğer javascript kütüphaneleriyle çakışmayı önlemiş olursunuz.
*Ayrıca dipnot olarak eklemek isterim Lightbox 'un jQuery için olan eklentisi mevcuttur, diğer kütüphaneleride import ederek sayfanızı yavaşlatmanıza gerek yoktur.
Ve şimdi gördüm sizde Lightbox'ın jQuery eklentisine link vermişsiniz fakat örnekde diğer kütüphaneleride import etmişsiniz. Ya örnekde yanlışlık var ya da linkte.
bende asp.net ile baya uğraşmama rağmen lightboxı direkt çalıştıramadım ve component oalrak yükledim. böyle bir paket var asp.net için. şimdi sorun yok ama ilginç gerçekten.
Bu yol ile sorun sadece ie ve firefox da çözülüyor ama chrome, opera, safari vb diğer tarayıcılarda problem devam ediyor.
@ercans Chrome ve Safari de tekrar test ettim. Sorun yok.
şu asp.net belasından gına geldi artık. anlamıyorum normalde çalışan js kütüphaneleri bile asp.net için yazılmış özel sürümler gerektiriyor. lightbox mesela neden çalışmaz arkadaş istemci taraflı değil mi. .net kodlarımıza ne yapıyor.
lightbox'ın jquery için özel sürümünü indirdim ama yine çakışıyor. lightbox da çalışmıyor üstelik jquery de. anlamadım jQuery.noConflict(); ile denedim yine birşey değişmedi.
daha önce ufak kodlar olan bir projede kullanmıştım ama burda jquery kodlarım biraz uzun $ değişkeniyle sorun yok ama lb de ekleyince jquery çalışmamaya başlıyor.
asp.net javascript kodunuza bişey yapmaz, ama idlerinizi kontrol etmeniz gerekir çünkü asp.net in obje idleri sizin yazdığınız şekilde kalmaz, hierarşik olarak tekrar adlandırılır.
ama asp.net componentiyle alakalı birşey değil ki. asp.net 2.0 ile lightbox'ı normal html image ve linklerle dahi çalıştıramıyorum.
bunu sorunsuz bir sekilde uygulayip calsitiran varmi?? bende sorun cozulmedide
yorumları Bi Gözden Geçirdimde =) Ciddi Ciddi Bu Çakışma Sorununu Kafaya Takanlar Var. Ben Böle bi Problemle Karşılaşmadım Peki Nasıl Dİye Sorarsanız; Her Sayfanın Eklentilerini Ayrı Ayrı import ediyorum, Diğer eklentilerin içinde jquery.js(Bu Dosyanın Adına Bazılarımız Farklı isimlerde yazabiliyor) dosyası varmı yokmu varsa hangi sürümler diye kontrol ediyorum ve eğer aynıysa o sayfada sadece birini kullanıyorum ve sorun yok, ama bu değildirki hiçbirzaman bu şekilde sorun olmucak Elinde Sonunda Problemler Çıkıcaktır Bunun içinse @turuncum arkadaşımızın dediği gibi $. yarine kendinize bir değer oluşturun.
pillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.
Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.