Karalama Defteri
Klavye Kırıntıları
Neredeyse bir web 2.0 standardı olan accordion menüler sayfalarımızında vazgeçilmezi haline geldi. Şimdi yazacağımız plugin ile accordion menü hazırlamak çok
kolay hala gelecek. Sizlerde üzerinde biraz değişiklikler yaparak istediğiniz yapıda menüleri kolaylıkla oluşturabilirsiniz.
Öncelikle menümüzün salt html halini oluşturalım;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9" /> <title>Accordion Menü</title> </head> <body> <div class="accordion"> <ul title="Baslık bir"> <li><a href="#">Madde 1</a></li> <li><a href="#">Madde 2</a></li> <li><a href="#">Madde 3</a></li> </ul> <ul title="Baslık İki"> <li><a href="#">Madde 2-1</a></li> <li><a href="#">Madde 2-2</a></li> <li><a href="#">Madde 2-3</a></li> </ul> <ul title="Baslık Üç"> <li><a href="#">Madde 3-1</a></li> <li><a href="#">Madde 3-2</a></li> <li><a href="#">Madde 3-3</a></li> </ul> </div> </body> </html>
Sayfamıza jquery.js dosyamızı ekledikten sonra accordion.js adında bir javascript dosyası oluşturalım kendimize.Oluşturduğumuz accordion.js dosyasını
sayfamıza <link> etiketi ile ekledikten sonra kodlarımızı yazmaya başlayalım.
Öncelikle sabitlerimizi oluşturalım
var divClass = "accordion";//accorion uygulanacak ul'lerin bulunduğu divin classı var menuHtml = "";//sayfadaki mevcut kodları temizledikten sorna kendi kodlarımızı ekleyeceğimiz değişken. var sonAcikUl = -1;//en son açılan ul'un id'si.Eğer -1 ise henüz hiçbiri açılmamış demektir.
Buradaki değişkenlerimizin açıklaması zaten yanlarında mevcut ancak <strong>menuHtml</strong> üzerinde durmamız sanırım iyi olacaktır. Eğer
menümüzün üzerinde ekstra birşey yer almasını istiyorsak bu değişkene atayabiliriz. Örneğin menümüzün üzerinde menu.jpg adında bir grafik yer almasını
istiyorsak
var menuHtml = "<img src="menu.jpg" />";
şeklinde değiştirebiliriz.
Kodumuzun ilk bölümü hazırlandı. Şimdi sayfamız yüklendiğinde değiştirilecek alanı bularak gerekli işlemleri yapmaya başlamamız gerekmektedir. Bu işlemleri
jQuery’nin $(document).ready fonksiyonu ile başlatıyoruz ;
$(document).ready(function(){
var us = $('div.'+divClass+'>ul').length;//işleme girecek ul sayısını alıyoruz
//bunları bir for döngüsü ile spanolustur fonksiyonuna atıyoruz
for(i=0;i<us;i++)
{
spanOlustur(i);
}
//fonksiyonumuz gerekli işlemleri yaptıktan sonra bize işlevsel html kodlarımız dönüyor
//Bizde bunları en başta belirlediğimiz div'in içeriğine eklemeden önce
//div'imizin içindeki html kodlarını temizliyoruz
//daha sonrada fonksiyonumuzun oltuşturduğu kodları div'imize ekliyerek işlemlerimizi tamamlıyoruz
$('div.'+divClass).empty().html(menuHtml);
//accordion menümüz artık hazır ve geriye kalan tek şey ul etiketlerinin bulunduğu divleri kapatmak
$('div.acilanDiv').hide();
});
Evet işlemler bitti ve menümüz hazır hayırlı olsun demeyeceğim tabii ki. Burada çağırmış olduğumuz spanOlustur fonksiyonumuz tüm
işlevselliği sağlayor. Şimdi o fonksiyonumuzu yazalım.
Not:jQuery’nin en güzel seçicilerinden olan eq’nun burada güzel bir kullanımını göreceğiz.Bu seçicinin ne işe yaradığını kısaca anlatmak gerekirse :
eq ile istediğimiz bir etiketin istediğimiz sıradaki elemanını seçebiliriz. Biz burada menümüzü oluşturan ul’leri sırası ile seçerek
içerisindeki html kodlarını alıp istediğimiz hale getiriyoruz.
function spanOlustur(ulSayi)
{
//fonksiyonumuz ile gelen ulSayi'ncı sıradaki ul'u seçiyoruz
//bu elementi ul adında bir değişkene atıyoruz.
var ul = $('div.'+divClass+'>ul:eq('+ulSayi+')');
//ulHtml değişkenine ul'e ait html'i atıyoruz
var ulHtml = ul.html();
//menümüzün başlıklarını oluşturmak için ul'e ait title etiketinin değerini alıyoruz.
var spanBaslik = ul.attr('title');
//şimdi ise menümüzü oluşturuyoruz.
//öncelikle bir div oluşturup class,id ve onclick özelliklerini ayarlıyoruz.
//onclick'de accordionAc diye bir fonksiyonu tetikliyoruz.
//En son olarak da menümüzün başlığını bu dive içerik olarak ekliyoruz.
var menu = '<div class="accordionBaslik" id="menu'+ulSayi+'" onclick="accordionAc('+ulSayi+');">'+spanBaslik+'</div>';
//başlık divinin altına bir div daha ekleyerek onada menümüzü içerik olarak göstereceğiz.
//burada dikkatinizi çekmek istediğim bir nokta var;
//az önce hazırladığımız ulHtml, ul etiketlerinin içerisinde kalan li ve a etiketlerini alıyor sadece
//bu yüzden yeni bir ul etiketi yazmak zorundayız.
menu += '<div id="ul'+i+'" class="acilanDiv"><ul class="accordion">'+ulHtml+'</ul></div>';
//yeni bir menu elementimiz hazır olduğuna göre bunu menuHtml değişkenine ekleyebiliriz.
menuHtml += menu;
}
Şu anda menümüz hazır ancak kullanılabilir değil. Sebebiyse tabii ki accordionAc fonksiyonunu henüz yazmamış olmamız. Bu fonksiyonumuzuda
yazarak pluginimizi tamamlayalım.
function accordionAc(id)
{
if(sonAcikUl!=id)//eğer açık dive tıkladı ise herhangi bir işlem yapmıyoruz.
{
if(sonAcikUl==-1)//buradada menüye ilk defa tıklanıp tıklanmadığını kontrol ediyoruz
{
$('div#div'+id).slideDown(250);//eğer ilk tıklama ise sadece açma işlemi yapıyoruz
}
else
{
$('div#div'+sonAcikUl).slideUp(250);//son açık olan divi kapatıyoruz
$('div#div'+id).slideDown(250);//tıklanan divi açıyoruz
}
sonAcikUl = id;
}
}
Artık menümüz kullanıma hazır.
Örnek uygulama için buraya tıklayabilirsiniz.
Örneği indirmek içinde buraya tıklayabilirsiniz.
Bir sonraki yazıda görüşmek dileğiyle hoşçakalın.

26/04/2009 - 3:26 am
Tags: each, Jquery
Posted in Jquery | 2 comments
Çok geçte olsada jQuery’i temelden ve elimden geldiği kadar anlatmaya karar verdim.(Eğer “jQuery ne” diye bir soru oluştu ise aklınızda erhan burhan‘ın sitesindeki güzel yazısını tavsiye ederim)
Sanırım sadece yazı değil, yanında videolar ile anlatımlarımda olacak.
jQuery dökümanları ile paralel olarak yazmaya çalısacağım ancak içerisinde atlayacağım alanlar olacak. Orta hatta ortanın üstü bir jQuery bilgisine sahip olmanızı [...]
31/03/2009 - 10:16 am
Tags: Jquery, required, validation
Posted in Javascript, Jquery | No comments
Jquery ile bir çok validation (doğrulama) plugin’i bulmamız mümkün. Ancak küçük ve orta boyutlu projelerde kendimize has ve daha küçük boyutlu doğrulama ihtiyaçlarımız doğabilir. Kendi yazdığımız kodlar her zaman için daha rahat kontrol altında tutulabilir diye düşünüyorum.
Jquery ile bir formda yer alan input elemanlarından “type=text” yani tipi yazı olanları kapsayan bir script yazalım. Doğrulama esnasında [...]
22/11/2008 - 4:30 am
Tags: animasyon, animate, each, efekt, effect, galeri, gallery, Javascript, Jquery, picture, picture gallery, resim galerisi
Posted in Jquery | No comments
Bir önceki yazımda jQuery ile animasyona giriş yapmıştık. Bu yazı ile zincirleme ve etkileşimli animasyonlar hazırlayacağız.
Zincirleme derken neden bahsediyorum ;
Bir divimiz var ve biz bunu önce genişlemesini sonrada yüksekliğinin değişmesini istiyoruz. İşte burada jQuery’nin en sevdiğim özelliklerinden birisi olan zincirleme devreye giriyor.
Önce javascript kodlarımızı yazalım :
function func1(id)
{
//id'sini parametre olarak gönderdiğimiz elementin
//önce [...]
jQuery’nin işimizi kolaylaştırdığı tartışılamaz. Ancak bize sunmuş olduğu bazı imkanlar varki bunlar işimizi kolaylaştırmanın yanında işimizi zevkli kılıyor. Bunların başındada animate geliyor. Çok daha görsel sayfalar oluşturabilmek çok daha kolay.
Animate jQuery’nin effect grubundan bir öğedir. Genel yazım şekli ;
.animate( params, [duration], [easing], [callback] );
params : animasyonumu belirleyen parametrelerden oluşur.
duration : anismasyonun süresini belirlememizi sağlar. Alabileceği [...]
31/10/2008 - 7:33 pm
Tags: accordion, accordion menu, akordiyon, akordiyon menü, Jquery, plugin
Posted in Jquery | 2 comments
Bir önceki yazımda jQuery ile accordion menü hazırlamayı anlatmıştım. Şimdi ise o functionun plugin halini sizlerle paylaşıyorum.
Pluginin asıl amacı accordion menüler oluşturmak. Ancak ayarlardan daha değişik işlemler için kullanılabilir hale getirebilirsiniz.
Kullanım şekli :
$('div.accordion1').accordion();
İsterseniz kullanabileceğiniz 6 tane ayar barındırıyor içerisinde. Ayarlarının kullanım şekli :
$('div.accordion1').accordion({
acik:1,
baslik:'<div class="menuTitle">Fade – ul </div>',
hiz:150,
etiket:'ul',
effect:'fade',
style:'menu'
});
Ayarlarımızı tek tek açıklayalım :
acik:
Menüdeki maddelerden hangisinin açık geleceğini [...]
28/10/2008 - 7:12 pm
Tags: Jquery, jqueryturk, jqueryturk.com, video
Posted in Günlük | 1 comment
Çok ama çok kötü bir blog yazarı olduğumu biliyorum. Aslında bu yazı yerine konuşma ile olsaydı çok iyi olurdu diye düşündüm geçen gün ve bundan sonra (umarım) yazmaya başlıyacağım jquery örneklerini video ile hazırlamaya karar verdim.
Ortalarda yokken çok önemli bir projede yer aldım ve jQueryTurk.com‘da yazmayada başladım.
Oraya paralel olarak yazılarımı burayada ekleyeceğim tabii ki.
Benzer YazılarjQuery [...]
31/07/2008 - 1:00 am
Tags: Javascript, js, QueryString, request
Posted in Javascript | No comments
Tüm internet yazılım dillerinde kullandığımız Request.QueryString malesef Javascript‘de hali hazırda yok.
Her zaman gerekmesede işinizin düştüğü zamanlar mutlaka olmuştur. Benim bir projede, proje tamamlandıktan sonra QueryString‘den bilgi çekmem gerekti. Yazılım tarafı tamamlandığı için bir şey yapılması uzun zaman alacağından yazılımcının can simidi olan Javascript’e başvurmayı denedim ve şimdilerde çok hoşuma giden bir script çıktı ortaya.
Şimdi küçük [...]
22/07/2008 - 10:39 am
Tags: arama, Javascript, Jquery, livesearch, search
Posted in Javascript, Jquery | No comments
John Nunemaker‘ın ilk olarak sadece javascript ile yazdığı, daha sonra Jquery ile desteklediği LiveSearch uygulamasını, John Resig biraz optimize etmiş.
LiveSearch John Nunemaker versiyonu, prototype versiyonu.
John Resig’in modifiyeli versiyonu.
Hangisi daha iyi, daha performanslı derseniz, şu an için hiç deneme şansım olmadı ve eldeki örneklerden ise bu daha iyi diyemeceğimiz için sytanxı düzgün olan versiyonu seçmek daha [...]
22/07/2008 - 9:56 am
Tags: IPhone, Jquery
Posted in Javascript, Jquery, İnternet | No comments
Iphone’u birçoğumuz biliyoruz, bilmeyenlerde Vodafone‘un kampanyası ile haberdar oldu sanırım.
IPhone bildiğiniz gibi OS X mobile işletim sistemi kullanıyor. Hangi javascripti destekleyeceklerini en azından ben merakla bekliyordum. Bugün okuduğuma göre Jquery 1.1.3.1 ile IPhone‘un seçimi olmayı başarmış. Başarmış diyorum çünkü IPhone 2 piyasaya çıkalı 2 hafta olmadan 3-4 milyon arasında sattı bile. Yani piyasada gerçekten çok [...]
12/05/2008 - 1:39 am
Tags: CSS, document.getElementById, DOM, HTML, Javascript, javascript kütüphanesi, javascript libary, js, js libary, kütüphane, libary, tag
Posted in Javascript | No comments
Eğer web tasarımı ile ilgileniyorsanız javascript kütüphanelerini duymuş ve hatta kullanmışsınızdır. Jquery, prototype, mootools ve dojo bunların en meşhur olanlarıdır. Bu kütüphaneler ile çok güzel ve gelişmiş js yazılımları yapabileceğimiz gibi javascript işlemlerinde bize bir çok kolaylık sağlamaktadırlar. Ancak birçok kişi, sadece bir kaç div’i açıp kapatmak için 100-150Kb’lık kütüphaneleri [...]
06/05/2009 - 1:25 pm
Hi, good post. I have been pondering this topic,so thanks for sharing. I’ll probably be subscribing to your blog. Keep up the good posts
[Translate]
06/05/2009 - 1:38 pm
Thank alot
[Translate]
17/08/2009 - 2:21 pm
Gerçekten çok işime yaradı, güzel anlatımınız ve paylaşımınız için gerçekten çok teşekkür ederim… Çalışmalarınızda başarılar dilerim…
[Translate]
28/09/2009 - 7:31 am
İyi günler öncelikle teşekkür ederim gerçekten çok küçük boyutlu ve kullanışlı bir accordion olmuş. Bir soru sormak istiyorum js konusunda pek bilgi sahibi değilim. Açılmış olan divlerde accordionBaslik sınıfına ek bir sınıf ekleyebilir miyiz? Yani açılmış olan başlığı vurgulamak istiyorum. Bunu <div class=”accordionBaslik selected” gibi bir sınıf atayarak yapabiliriz belki fakat bunu nasıl yapabiliriz?
[Translate]
24/11/2009 - 1:07 pm
I like this site really much.
This is really a outstanding web.
And it is not like other money orientated web, the message here is really helpful.
I am definitely bookmarking it as well as sharing it with my friends.
[Translate]
02/12/2009 - 5:56 pm
I am definitely bookmarking this page and sharing it with my friends.
[Translate]
02/12/2009 - 9:17 pm
Very extraordinary place.
The message here is very useful.
I will tell my friends.
Cheers
[Translate]
04/12/2009 - 5:14 am
Dear Author weboutbox.com !
Now that’s something like it!
[Translate]
05/12/2009 - 9:08 pm
Very good concept, I like how you convey the msg.
[Translate]