<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>asp.net, jquery ve diğer web teknolojileri üzerine &#187; jQuery</title>
	<atom:link href="http://www.apostylee.com/category/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.apostylee.com</link>
	<description>asp.net, jquery ve diğer web teknolojileri üzerine, biraz da kişisel.</description>
	<lastBuildDate>Mon, 10 Oct 2011 11:49:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>jQuery More eklentisi</title>
		<link>http://www.apostylee.com/jquery-more-plugin/</link>
		<comments>http://www.apostylee.com/jquery-more-plugin/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 11:42:48 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[eklenti]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[more]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=1832</guid>
		<description><![CDATA[Tahmin ediyorum 3 hafta sonra kaldığım yerden yazılarıma devam edeceğim. Bir proje için yazının tamamını gör olayını yaptım, bugünde bu olayı eklenti haline getireyim hemde jQuery e nasıl eklenti yazılıyor bunu bir göreyim diyerek more eklentisini yazdım :) (Hayatımın en garip duygulu günlerinden birini geçiriyorum, bu sebepten dolayı cümlelerde anormallikler olabilir, kodlarda da, sonra uğrar [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Tahmin ediyorum 3 hafta sonra kaldığım yerden yazılarıma devam edeceğim. Bir proje için yazının tamamını gör olayını yaptım, bugünde bu olayı eklenti haline getireyim hemde jQuery e nasıl eklenti yazılıyor bunu bir göreyim diyerek <strong>more</strong> eklentisini yazdım :) (Hayatımın en garip duygulu günlerinden birini geçiriyorum, bu sebepten dolayı cümlelerde anormallikler olabilir, kodlarda da, sonra uğrar düzeltirim.)</p>
<p>Eklenti şu işi yapıyor; diyelim uzunca bir yazı var ve siz bunun ilk 100 karakterini göstermek istiyorsunuz, 100 karakterden sonra çıkan bir düğmeylede yazının tamamını gösteriyorsunuz. Yada kendi belirlediğiniz bir ayraçla bu işlemi yapabiliyorsunuz. Bu arada eğer özellik açıksa ki varsayılan olarak açık, html etiketlerini kaldırıyor, devam et düğmesine basıncada yazının orjinal halini getiriyor.  Örneklere bakarak demek istediğimi daha iyi anlayabilirsiniz.</p>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function () {
  $(&quot;.more&quot;).more();
  $(&quot;.more&quot;).more({text:' ..more',textClass:'moreLink',character:50,splitChar:'{devam}'});
});
</pre>
<p><strong>Eklentinin git adresi:</strong> <a href="https://github.com/apoStyLEE/jQuery-More-plugin">https://github.com/apoStyLEE/jQuery-More-plugin</a></p>
<p><strong>Örnek: </strong><a href="http://95.0.146.135/jqueryMore/">http://95.0.146.135/jqueryMore/</a></p>
<div class="shr-publisher-1832"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/jquery-more-plugin/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>jQuery UI sürükle bırak ile alış veriş sepeti mantığı</title>
		<link>http://www.apostylee.com/jquery-ui-drag-drop-ile-alis-veris-sepeti-mantigi/</link>
		<comments>http://www.apostylee.com/jquery-ui-drag-drop-ile-alis-veris-sepeti-mantigi/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 07:01:36 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[basket]]></category>
		<category><![CDATA[drag drop]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jqueryui]]></category>
		<category><![CDATA[sepet]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=1775</guid>
		<description><![CDATA[Uzun zaman önce hayalini çok kurduğumuz fakat yeterince javascript bilmemekten ve kütüphanelerin bu denli gelişmiş olamayışından dolayı bir türlü gerçekleştiremediğimiz bir olaydı bu. Nereden aklıma geldi bilmiyorum, fakir bir çocuğun zengin olduğunda hayalini kurup bir türlü yapamadığı şeyi yapması heyecanıyla sarıldım web matrixe :) Heeeeeman, güç bende artık ! Senaryomuz şu şekilde, bir tarafta ürünlerimiz [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Uzun zaman önce hayalini çok kurduğumuz fakat yeterince javascript bilmemekten ve kütüphanelerin bu denli gelişmiş olamayışından dolayı bir türlü gerçekleştiremediğimiz bir olaydı bu. Nereden aklıma geldi bilmiyorum, fakir bir çocuğun zengin olduğunda hayalini kurup bir türlü yapamadığı şeyi yapması heyecanıyla sarıldım web matrixe :) Heeeeeman, güç bende artık !<br />
<a href="http://www.apostylee.com/wp-content/uploads/2011/05/jquery-jqueryui-ninja.jpg"><img class="size-medium wp-image-1550 aligncenter" title="jquery-jqueryui-ninja" src="http://www.apostylee.com/wp-content/uploads/2011/05/jquery-jqueryui-ninja-300x254.jpg" alt="" width="300" height="254" /></a><br />
<span id="more-1775"></span><br />
Senaryomuz şu şekilde, bir tarafta ürünlerimiz var diğer tarafta ise alış veriş sepetimiz. Kullanıcı almak istediği ürünü sürükleyip sepete bırakıyor. Aynı ürünü tekrar sepete attığında sadece adet bir artıyor. Ürünü sepetinden çıkartmak istediğinde ise, üzerine çift tıklıyor. Bu işi yapmak için <a href="http://www.jquery.com/" target="_blank">jQuery</a> ve <a href="http://www.jqueryui.com/" target="_blank">jQueryUI</a> kullanıyoruz. En can alıcı noktamız ise jQuery UI nin <strong><a href="http://jqueryui.com/demos/draggable/" target="_blank">Draggable</a></strong> ve <strong><a href="http://jqueryui.com/demos/droppable/" target="_blank">Droppable</a></strong> özelliği. Kodların üzerinde açıklamalar bulunuyor.</p>
<pre class="brush: jscript; title: ; notranslate">
        $(document).ready(function(){

            // Sürükleme yapılacak elemanları seçiyoruz.
            $(&quot;.urunGrid ul li&quot;).draggable({
                revert:true,
                helper: &quot;clone&quot;
            });

            // Üzerine elemanları alacak olan kısmı belirtiyoruz. Yani sepetimiz.
            $(&quot;.sepet&quot;).droppable({
                drop: function( event, ui ) {
                    var t = $(this);
                    var d = ui.draggable; // bu bizim tuttuğumuz eleman yani &lt;li&gt; elementi
                    var ul = t.find(&quot;ul&quot;); // Sepetimizin içindeki ul elementimiz.
                    var id = d.attr(&quot;id&quot;); // tuttuğumuz ürünün id si.
                    var idToLi = ul.find(&quot;#&quot;+id); // sepette, tuttuğumuz id ye sahip ürünü seçiyoruz.
                    var adet;

                   // Veritabanına yazma işlerini burada yapabilirsiniz. (ajax)                    

                    idToLi.fadeOut().fadeIn(); // şeklimizi yapıyoruz :)

                    // eğer daha önce ürün ekli değilse ekliyoruz, ekliyse adetini 1 arttırıyoruz.
                    if(idToLi.html()==null){
                        ul.append(&quot;&lt;li id=\&quot;&quot;+id+&quot;\&quot; title=\&quot;Silmek için çift tıklayın\&quot;&gt;&lt;em&gt;1 *&lt;/em&gt; &quot;+d.html()+&quot;&lt;/li&gt;&quot;);
                    }
                    else{
                        adet = parseInt(idToLi.find(&quot;em&quot;).text().replace(&quot; *&quot;,&quot;&quot;));
                        idToLi.find(&quot;em&quot;).text(adet+1+&quot; *&quot;);
                    }
                    toplam(); // sepetin altına toplam alan fonksiyonu çağırıyoruz.
                }
            });

            // Sepetteki ürüne çift tıklandığında silinmesini sağlıyoruz.
            $(&quot;.sepet ul li&quot;).live(&quot;dblclick&quot;, function() {
                var adet = parseInt($(this).find(&quot;em&quot;).text().replace(&quot; *&quot;, &quot;&quot;));
                if (adet == 1) {
                    $(this).remove();
                }
                else {
                    $(this).find(&quot;em&quot;).text(adet-1+&quot; *&quot;);
                }
                toplam(); // Ürün silindiğinde toplamın yeniden hesaplanmasını sağlıyoruz.
            });
        });

        function toplam(){
            var toplam=0;
            var t;
            var fiyat;
            var adet;

            // Eğer sepette ürün yoksa &quot;ürün yok&quot; ibaresini görünmez yapıyoruz.
            if($(&quot;.sepet ul li&quot;).length != 0){
                $(&quot;.sepet h1 small&quot;).fadeOut();
            }
            else
            {
                $(&quot;.sepet h1 small&quot;).fadeIn();
            }

            // Sepetin içinde ki ürünleri yani &lt;li&gt; leri döndürüp toplama işlemini yapıyoruz.
            $(&quot;.sepet ul li&quot;).each(function(){
                t = $(this);
                fiyat = parseFloat(t.find(&quot;span&quot;).text().replace(t.find(&quot;span small&quot;).text(),&quot;&quot;));
                adet = t.find(&quot;em&quot;).text().replace(&quot; *&quot;,&quot;&quot;);
                toplam += (fiyat*adet);
            });

            // toplamı ilgili alana yazdırıyoruz.
            $(&quot;#toplam&quot;).fadeIn().text($(&quot;.sepet ul li&quot;).length+&quot; Ürün, Toplam: &quot;+toplam+&quot; TL&quot;);
        }
</pre>
<pre class="brush: xml; title: ; notranslate">
    &lt;body&gt;
        &lt;div class=&quot;tasiyici&quot;&gt;
            &lt;div class=&quot;kutu urunGrid&quot;&gt;
                &lt;h1&gt;Ürünler&lt;/h1&gt;
                &lt;ul&gt;
                    &lt;li id=&quot;1&quot;&gt;Asus Anakart &lt;span&gt;125&lt;small&gt; TL&lt;/small&gt;&lt;/span&gt;&lt;/li&gt;
                    &lt;li id=&quot;2&quot;&gt;Intel İşlemci &lt;span&gt;23&lt;small&gt; TL&lt;/small&gt;&lt;/span&gt;&lt;/li&gt;
                    &lt;li id=&quot;3&quot;&gt;Amd İşlemci &lt;span&gt;44&lt;small&gt; TL&lt;/small&gt;&lt;/span&gt;&lt;/li&gt;
                    &lt;li id=&quot;4&quot;&gt;Sony Bilmemne &lt;span&gt;96&lt;small&gt; TL&lt;/small&gt;&lt;/span&gt;&lt;/li&gt;
                &lt;/ul&gt;
            &lt;/div&gt;

            &lt;div class=&quot;kutu sepet&quot;&gt;
                &lt;h1&gt;Sepet &lt;small&gt;ürün yok&lt;/small&gt;&lt;/h1&gt;
                &lt;ul&gt;&lt;/ul&gt;
                &lt;div id=&quot;toplam&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;

            &lt;div style=&quot;clear:both&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/body&gt;
</pre>
<p>Sürükle bırak gibi dışarıdan karışık gelen bir olayı jQuery sayesinde çok basit bir şekilde çözdük. Bu konuyla ilgili ufak tefek denemeler yaparak olayı daha iyi kavraya bilirsiniz. Aşağıda çalışan örneği görebilirsiniz, umarım faydalı bir yazı olmuştur :)</p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/apoStyLEE/3bgz6/embedded/result,js,html,css"></iframe></p>
<div class="shr-publisher-1775"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/jquery-ui-drag-drop-ile-alis-veris-sepeti-mantigi/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>jQuery serialize ve serializeArray fonksiyonları</title>
		<link>http://www.apostylee.com/jquery-serialize-ve-serializearray-fonksiyonlari/</link>
		<comments>http://www.apostylee.com/jquery-serialize-ve-serializearray-fonksiyonlari/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 10:02:53 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[serialize]]></category>
		<category><![CDATA[serializeArray]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=1758</guid>
		<description><![CDATA[Bu yazıda jQuery ile serileştirme (serialize) olaylarına değineceğim. Serileştirme, bir grup form elemanın elemanAdi ve içindeki değer olarak bir string haline yada dizi (array) haline getirilmesine diyoruz. Bu yöntem özellikle ajax ile veritabanı işlemleri yaparken kullanılıyor. İçinde 10 tane form elemanı olan bir form düşünelim, bu formu ajax kullanarak veritabanına yazmamız gerektiğinde her form elemanı [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Bu yazıda jQuery ile serileştirme (<a href="http://api.jquery.com/serialize/" target="_blank">serialize</a>) olaylarına değineceğim. Serileştirme, bir grup form elemanın <strong>elemanAdi</strong> ve <strong>içindeki değer</strong> olarak bir string haline yada dizi (array) haline getirilmesine diyoruz. Bu yöntem özellikle ajax ile veritabanı işlemleri yaparken kullanılıyor.</p>
<p><a href="http://www.apostylee.com/wp-content/uploads/2011/05/jquery-jqueryui-ninja.jpg"><img class="size-medium wp-image-1550 aligncenter" title="jquery-jqueryui-ninja" src="http://www.apostylee.com/wp-content/uploads/2011/05/jquery-jqueryui-ninja-300x254.jpg" alt="" width="300" height="254" /></a><br />
<span id="more-1758"></span><br />
İçinde 10 tane form elemanı olan bir form düşünelim, bu formu ajax kullanarak veritabanına yazmamız gerektiğinde her form elemanı için tanımlama yapmamız gerekir, işte serileştirme bu noktada işimize yarıyor, <strong>$(&#8220;form&#8221;).serialize();</strong> dediğimizde otomatik olarak form serileştiriliyor ve istediğimiz gibi kullanabiliyoruz. Form serileştiğinde <strong>alan1=1&amp;alan2=2&amp;alan3=3&amp;select1=test1</strong> haline geliyor.</p>
<p>jQuery serileştirme işini dizi şeklinde de yapabiliyor. Serileştirme sonucunda oluşan veri yapısı şu şekilde oluyor;</p>
<pre class="brush: jscript; title: ; notranslate">
[
    {
        name: &quot;a&quot;,
        value: &quot;1&quot;
    },
    {
        name: &quot;b&quot;,
        value: &quot;2&quot;
    },
    {
        name: &quot;c&quot;,
        value: &quot;3&quot;
    },
    {
        name: &quot;d&quot;,
        value: &quot;4&quot;
    },
    {
        name: &quot;e&quot;,
        value: &quot;5&quot;
    }
]
</pre>
<p>Görüldüğü üzere çıktımız jSon data şeklinde oluyor. Bu sayede veriyi çok kolay bir şekilde işleyebiliyoruz. Kullanımı ise <strong><a href="http://api.jquery.com/serializeArray/" target="_blank">$(&#8220;form&#8221;).serializeArray();</a></strong> şeklinde.</p>
<p>Her iki yönetimi form elementi kullanmadan diğer html elementleri içinede uygulamamız mümkün. Ekstradan yapmamız gereken tek şey * karakterini kullanarak element içindeki tüm elemanları belirtmek. Yani <strong>$(&#8220;div *&#8221;).serialize()</strong> gibi.. diyelim ki formumuz daki sadece input elementlerini serileştirmek istiyoruz bu seferde seçicimize sadece input ibaresini ekliyoruz <strong>$(&#8220;div input&#8221;).serialize()</strong></p>
<pre class="brush: xml; title: ; notranslate">

&lt;script type=&quot;text/javascript&quot; src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js&quot;&gt;&lt;/script&gt;&lt;script type=&quot;text/javascript&quot;&gt;// &lt;![CDATA[
            $(document).ready(function(){

                $(&quot;form.seri button&quot;).click(function(){
                    var seriForm = $(&quot;form.seri&quot;).serialize();
                    $(this).parent().find(&quot;span&quot;).text(seriForm);
                });

                $(&quot;div.seri button&quot;).click(function(){
                    var seriForm = $(&quot;div.seri *&quot;).serialize();
                    $(this).parent().find(&quot;span&quot;).text(seriForm);
                });

                $(&quot;div.seriArray button&quot;).click(function(){
                    var seriForm = $(&quot;div.seriArray *&quot;).serializeArray();
                    var t = $(this).parent().find(&quot;span&quot;);
                    t.empty();

                    $.each(seriForm, function(i,item){
                        t.append(item.name +&quot;=&quot;+ item.value);
                    });
                });

            })

// ]]&gt;&lt;/script&gt;
&lt;/pre&gt;
&lt;form class=&quot;seri&quot;&gt;
&lt;h3&gt;Form Serileştirme&lt;/h3&gt;
 &lt;input type=&quot;text&quot; name=&quot;alan1&quot; /&gt;
 &lt;input type=&quot;text&quot; name=&quot;alan2&quot; /&gt;
 &lt;input type=&quot;text&quot; name=&quot;alan3&quot; /&gt;
&lt;select name=&quot;select1&quot;&gt; &lt;option&gt;test1&lt;/option&gt;&lt;/select&gt;
&lt;select name=&quot;select1&quot;&gt; &lt;option&gt;test2&lt;/option&gt;&lt;/select&gt;
&lt;select name=&quot;select1&quot;&gt; &lt;option&gt;test3&lt;/option&gt;&lt;/select&gt;

 &lt;button type=&quot;button&quot;&gt;serileştir&lt;/button&gt;
 &lt;/form&gt;
&lt;div class=&quot;seri&quot;&gt;
&lt;h3&gt;Div Serileştirme&lt;/h3&gt;
 &lt;input type=&quot;text&quot; name=&quot;alan1&quot; /&gt;
 &lt;input type=&quot;text&quot; name=&quot;alan2&quot; /&gt;
 &lt;input type=&quot;text&quot; name=&quot;alan3&quot; /&gt;
&lt;select name=&quot;select1&quot;&gt; &lt;option&gt;test1&lt;/option&gt;&lt;/select&gt;
&lt;select name=&quot;select1&quot;&gt; &lt;option&gt;test2&lt;/option&gt;&lt;/select&gt;
&lt;select name=&quot;select1&quot;&gt; &lt;option&gt;test3&lt;/option&gt;&lt;/select&gt;

 &lt;button type=&quot;button&quot;&gt;serileştir&lt;/button&gt;&lt;/div&gt;
&lt;div class=&quot;seriArray&quot;&gt;
&lt;h3&gt;Div Array olarak Serileştirme&lt;/h3&gt;
 &lt;input type=&quot;text&quot; name=&quot;alan1&quot; /&gt;
 &lt;input type=&quot;text&quot; name=&quot;alan2&quot; /&gt;
 &lt;input type=&quot;text&quot; name=&quot;alan3&quot; /&gt;
&lt;select name=&quot;select1&quot;&gt; &lt;option&gt;test1&lt;/option&gt;&lt;/select&gt;
&lt;select name=&quot;select1&quot;&gt; &lt;option&gt;test2&lt;/option&gt;&lt;/select&gt;
&lt;select name=&quot;select1&quot;&gt; &lt;option&gt;test3&lt;/option&gt;&lt;/select&gt;

 &lt;button type=&quot;button&quot;&gt;serileştir&lt;/button&gt;&lt;/div&gt;
&lt;pre&gt;
</pre>
<p>Serileştirme, çok zahmetli işleri kolayca ve hızlı bir şekilde yapmamıza olanak sağlıyor ;) Örneklerin çalışır haline <strong><a href="http://www.apostylee.com/wp-content/uploads/2011/08/index.html" target="_blank">buradan</a></strong> bakabilirsiniz.</p>
<div class="shr-publisher-1758"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/jquery-serialize-ve-serializearray-fonksiyonlari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax ile daha fazla kayıt göster olayı (Load More Data)</title>
		<link>http://www.apostylee.com/ajax-daha-fazla-kayit-goster-olayi-load-more-data/</link>
		<comments>http://www.apostylee.com/ajax-daha-fazla-kayit-goster-olayi-load-more-data/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 11:52:34 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[code-first]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[load more data]]></category>
		<category><![CDATA[mvc3]]></category>
		<category><![CDATA[sayfalama]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=1663</guid>
		<description><![CDATA[Yine kullanımını ilk olarak Facebook ve Twitter&#8217; dan gördüğümüz bu olayın temel mantığını bildiğimiz sayfalama oluşturuyor. Neden bu şekilde bir sayfalama kullanmak gerekiyor isterseniz bunlara bir bakalım. Sayfa komple yenilenmeyeceğinden daha işlevsel. Örneğin; kullanıcı video izlerken altında ki yorumları sayfa sayfa dolaşmak isterse, video yarıda kesilmeyecektir. Sayfanın sadece ilgili yerini, ilgili kayıtlar kadar güncelleyeceğimizden daha [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Yine kullanımını ilk olarak Facebook ve Twitter&#8217; dan gördüğümüz bu olayın temel mantığını bildiğimiz sayfalama oluşturuyor. Neden bu şekilde bir sayfalama kullanmak gerekiyor isterseniz bunlara bir bakalım.</p>
<ol>
<li>Sayfa komple yenilenmeyeceğinden daha işlevsel. Örneğin; kullanıcı video izlerken altında ki yorumları sayfa sayfa dolaşmak isterse, video yarıda kesilmeyecektir.</li>
<li>Sayfanın sadece ilgili yerini, ilgili kayıtlar kadar güncelleyeceğimizden daha performanslı. Bu performans sunucu tarafında; daha az sistem kaynağı tüketimi, kullanıcı tarafında ise; sayfanın yüklenme süresi olarak gözlenebilir. Özetlersek sunucudan yapılan isteği minimize etmiş oluyoruz.</li>
</ol>
<p>Çektiğim videoların birinde dile getirdiğim bir konu vardı, yukarıda ki maddeleri görünce yazılı olarak da eklemek istedim. Anlık çok fazla kullanıcıya, çok fazla isteğe cevap verme durumunda olan siteler ajaxı bizim kara kaşımıza yada şekilli olsun afilli olsun diye kullanmıyor. Örneğin Facebook her işlemde sayfayı yeniden yüklemeye kalkarsa altından kalkılamaz bir yükle karşı karşıya kalır. Anlık Facebook&#8217; a yazılan yorum, mesaj yada benzeri girdileri düşündüğümüzde ajaxın hava yastığı görevi gördüğünü hayal etmek güç olmasa gerek. Özetlemek gerekirse, ajax yaklaşımı şekilden ibaret değildir ;) Konumuza geri dönelim.<br />
<a href="http://www.apostylee.com/wp-content/uploads/2011/06/loadmoredata.png"><img class="alignnone size-large wp-image-1667" title="loadmoredata" src="http://www.apostylee.com/wp-content/uploads/2011/06/loadmoredata-600x463.png" alt="" width="600" height="463" /></a><br />
<span id="more-1663"></span><br />
Mekanızma şu şekilde çalışıyor. Ekranda listelediğimiz kayıtlardan sonuncusunun id sini post edip, bu id den küçük olan son 2 kaydı ekrana basıyoruz.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
    $(function () {
        sonId(null);
        $('.daha').live(&quot;click&quot;, function () {
            var id = $(this).attr(&quot;id&quot;);
            var t = $(this);

            t.before(&quot;&lt;img src=\&quot;@Url.Content(&quot;~/content/images/yukleniyor.gif&quot;)\&quot; class=\&quot;yukleniyor\&quot; title=\&quot;Yükleniyor, lütfen bekleyin..\&quot; /&gt;&quot;);
            t.hide();

            $.ajax({
                type: &quot;POST&quot;,
                url: &quot;@Url.Content(&quot;~/home/getir/&quot;)&quot;,
                data: &quot;SonId=&quot; + id,
                cache: false,
                success: function (data) {
                    if (data.sonId == -1) {
                        t.before(&quot;&lt;span&gt;Tüm kayıtlar bunlar.&lt;/span&gt;&quot;);
                        $(&quot;.yukleniyor&quot;).remove();
                        t.remove();
                        return;
                    }
                    $.each(data.m,function(i, item){
                        $(&quot;#liste&quot;).append(&quot;&lt;li id=\&quot;&quot;+item.id+&quot;\&quot; class=\&quot;hide\&quot;&gt;&lt;h5&gt;&quot;+item.baslik+&quot;&lt;/h5&gt;&lt;p&gt;&quot;+item.icerik+&quot;&lt;/p&gt;&lt;/li&gt;&quot;);
                        $(&quot;#liste li:last&quot;).fadeIn(&quot;slow&quot;);
                    });

                    sonId(data.sonId);
                    $(&quot;.yukleniyor&quot;).remove();
                    t.show();
                }
            });
            return false;
        });

        function sonId(gelen) {
            var id;
            if (gelen == null) {
                id = $(&quot;#liste li:first&quot;).attr(&quot;id&quot;);
            }
            else {
                id = gelen;
            }
            $(&quot;.daha&quot;).attr(&quot;id&quot;, id);
        }
    });
&lt;/script&gt;

&lt;ul id=&quot;liste&quot;&gt;
    @foreach (var item in Model)
    {
        &lt;li id=&quot;@item.id&quot;&gt;&lt;h5&gt;@item.baslik&lt;/h5&gt;&lt;p&gt;@item.icerik&lt;/p&gt;&lt;/li&gt;
    }
&lt;/ul&gt;

&lt;a href=&quot;#&quot; class=&quot;daha&quot;&gt;daha fazla&lt;/a&gt;
</pre>
<p>Home kontrolümüzdeki getir adında ki aksiyonumuz;</p>
<pre class="brush: csharp; title: ; notranslate">
  public ActionResult Getir()
        {
            //System.Threading.Thread.Sleep(2000); // yükleniyor mesajını görmek için biraz bekleme yapıyoruz ;)

            int sonId = Convert.ToInt32(Request.Form[&quot;SonId&quot;]);

            var result = context.mesajs.Where(x=&gt;x.id&lt;sonId).OrderByDescending(x=&gt;x.id).Skip(_skip).Take(_take);

            if (result.Count() == 0)
            {
                return Json(new { sonId = -1}, JsonRequestBehavior.AllowGet);
            }

            return Json(new { m = result, sonId = result.First().id }, JsonRequestBehavior.AllowGet);
        }
</pre>
<p>Bu örneği php, asp yada farklı bir dillede gerçekleştirebilirsiniz. Ben örneği asp.net de yapıyorum diye illa asp.net de olacak diye bir şart yok yani ;) Projenin çalışır haline <a href="http://95.0.146.135/loadmoredata" target="_blank">buradan</a> bakabilir, <a href="http://www.apostylee.com/wp-content/uploads/2011/06/LoadMoreData.zip">buradan </a>da indirebilirsiniz.</p>
<div class="shr-publisher-1663"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/ajax-daha-fazla-kayit-goster-olayi-load-more-data/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Textbox içinde arama (Twitter Style)</title>
		<link>http://www.apostylee.com/twitter-style-search-textbox/</link>
		<comments>http://www.apostylee.com/twitter-style-search-textbox/#comments</comments>
		<pubDate>Sat, 25 Jun 2011 07:37:30 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[arama]]></category>
		<category><![CDATA[jqueryui]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[mvc3]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[style]]></category>
		<category><![CDATA[textarea]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=1653</guid>
		<description><![CDATA[Twitter da tweet yazarken @ işaretiyle başlayıp yazmaya başladığımızda, arkadaşlarımızı bulmamıza olanak sağlayan bir arama mekanızması bulunuyor. Geçenlerde lazım oldu epey bir aradım fakat tam olarak bu işi yapan bir betiğe rastlayamadım, bende isteğime en yakın örneği bulup üzerinde bir kaç ufak değişiklikle amacıma ulaştım. Faydalandığım örneğin adresini bir türlü bulamadım, bu yüzden paylaşamıyorum :S [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Twitter da tweet yazarken <strong>@</strong> işaretiyle başlayıp yazmaya başladığımızda, arkadaşlarımızı bulmamıza olanak sağlayan bir arama mekanızması bulunuyor. Geçenlerde lazım oldu epey bir aradım fakat tam olarak bu işi yapan bir betiğe rastlayamadım, bende isteğime en yakın örneği bulup üzerinde bir kaç ufak değişiklikle amacıma ulaştım. Faydalandığım örneğin adresini bir türlü bulamadım, bu yüzden paylaşamıyorum :S Olayın temelinde <a href="http://jqueryui.com/demos/autocomplete/" target="_blank">jQueryUi &#8211; Autocomplete</a>&#8216; nin <a href="http://jqueryui.com/demos/autocomplete/#multiple" target="_blank">Multiple Values</a> özelliği bulunuyor.</p>
<p>Bu işi yaparken jQuery ve jQueryUi yi kullanıyoruz, diğer dinamik kısım için php, asp, java vb.. diller kolaylıkla kullanılabilir. Ben asp.net mvc (c#) ile bu örneği gerçekleştirdim. Mekanızma şöyle çalışıyor; adres satırından aranacak bilgiyi gönderip, veritabanında aramamızı gerçekleştirip sonucu geriye json olarak döndürüyoruz.</p>
<p><a href="http://www.apostylee.com/wp-content/uploads/2011/06/twitterstylesearch.png"><img class="size-large wp-image-1655 aligncenter" title="twitterstylesearch" src="http://www.apostylee.com/wp-content/uploads/2011/06/twitterstylesearch-600x354.png" alt="" width="600" height="354" /></a><br />
<span id="more-1653"></span><br />
Javascript kodlarımız (<strong>textAreaAutoComplete.js</strong>);</p>
<pre class="brush: jscript; title: ; notranslate">
$(function () {
    function split(val) {
        return val.split(/ \s*/);
    }
    function extractLast(term) {
        return split(term).pop();
    }

    $(&quot;#search&quot;)
		.bind(&quot;keydown&quot;, function (event) {
		    if (event.keyCode === $.ui.keyCode.TAB &amp;&amp;
					$(this).data(&quot;autocomplete&quot;).menu.active) {
		        event.preventDefault();
		    }
		})
		.autocomplete({
		    minLength: 0,
		    selectFirst: true,
		    source: function (request, response) {
		        if (extractLast(request.term).substr(0, 1) == &quot;@&quot;) {
		            $.getJSON(root + &quot;kullanici/search/&quot;, {
		                term: extractLast(request.term)
		            }, response);
		        }
		    },
		    focus: function () {
		        return false;
		    },
		    select: function (event, ui) {
		        var terms = split(this.value);
		        terms.pop();
		        terms.push(ui.item.value.split(' ')[0]);
		        terms.push(&quot;&quot;);
		        this.value = terms.join(&quot; &quot;);
		        return false;
		    }
		});
});
</pre>
<p>Veritabanında arama işlemini yapan action methodumuz.</p>
<pre class="brush: csharp; title: ; notranslate">
        public ActionResult search()
        {
            string strParameter = Request.QueryString[&quot;term&quot;].Replace(&quot;@&quot;, string.Empty).Replace(&quot;%40&quot;,string.Empty);

            var result = db.kullanicis.Where(x =&gt; x.takmaAd.Contains(strParameter));

            if (result.Count() == 0)
            {
                return null;
            }
            else
            {
                return Json(result.Select(x =&gt; &quot;@&quot;+x.takmaAd +&quot; &quot;+x.adSoyad), JsonRequestBehavior.AllowGet);
            }
        }
</pre>
<p>Çalışan örneğe <strong><a href="http://95.0.146.135/twitterStyleSearch" target="_blank">buradan</a></strong> ulaşabilir, <strong><a href="http://www.apostylee.com/wp-content/uploads/2011/06/twitterStyleSearch.zip" target="_blank">buradan</a></strong> indirebilirsiniz.</p>
<div class="shr-publisher-1653"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/twitter-style-search-textbox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery ile Laz İşi Ajax Push</title>
		<link>http://www.apostylee.com/jquery-ile-laz-isi-ajax-push/</link>
		<comments>http://www.apostylee.com/jquery-ile-laz-isi-ajax-push/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 09:03:25 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[focus]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[push]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=1601</guid>
		<description><![CDATA[Özellikle Friendfeed, Twitter, FaceBook gibi sosyal ağlarda sayfa yenilenmeden verilerin güncellendiğini biliyoruz. Bu tür bir durumu gerçekleştirmek için akla ilk gelen yöntem ajax ile verinin bulunduğu yeri belirli zaman aralıklarında yenilemek geliyor, fakat veri trafiğinin çok üst düzey olduğu bu sistemlerde sürekli yenileme yapmak aşırı kaynak tüketimine hatta sistemin durmasına sebep olur. Bu işi şüphesiz [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Özellikle Friendfeed, Twitter, FaceBook gibi sosyal ağlarda sayfa yenilenmeden verilerin güncellendiğini biliyoruz. Bu tür bir durumu gerçekleştirmek için akla ilk gelen yöntem ajax ile verinin bulunduğu yeri belirli zaman aralıklarında yenilemek geliyor, fakat veri trafiğinin çok üst düzey olduğu bu sistemlerde sürekli yenileme yapmak aşırı kaynak tüketimine hatta sistemin durmasına sebep olur. Bu işi şüphesiz en iyi yapan site FriendFeed, o kadar iyi yaptılar ki FaceBook bu siteyi ve geliştiricilerini satın aldı :) Neyse oralara daha fazla girmeden konumuza dönelim.</p>
<p><a href="http://www.apostylee.com/wp-content/uploads/2011/05/jquery-jqueryui-ninja.jpg"><img class="size-full wp-image-1550 aligncenter" title="jquery-jqueryui-ninja" src="http://www.apostylee.com/wp-content/uploads/2011/05/jquery-jqueryui-ninja.jpg" alt="" width="397" height="337" /></a><span id="more-1601"></span></p>
<p>Bundan epey zaman önce Facebook&#8217; un davranışlarını epeyce inceliyordum, özellikle sayfa sabitken verilerin güncellenmesi aklımı resmen alıyordu. Bir gün farkettim ki akıllı Facebook mühendisleri kullanıcı deneyimlerini o kadar iyi gözlemlemişler ki bu işi şu şekilde çözmüşler <strong>Window Focus</strong> ! Kullanıcı sayfada kaldığı sürece sağa sola tıklamıyor olabilir. Bu durum farklı sekmelere yada farklı sayfalara gidip tekrar gelmeyeceği anlamına gelmiyor ! Javascript ile pencerenin focus olayını kullanarak basit bir şekilde sanki veriler anlık güncelleniyor hissini kullanıcı üzerinde yaratabiliriz.</p>
<p>Index sayfamızdaki kodlarımız.</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
    var focus = false;
    $(document).ready(function () {

        $(window).bind('focus', function () {
            getData();
        });

        // ie
        $(document).bind('focusin', function () {
            getData();
        });

    });

    function getData() {
        if (focus) {
            focus = false;
        }
        else {
            focus = true;
            $.ajax({
                url: &quot;/home/getData/&quot; + $(&quot;#grid ul li:last&quot;).attr(&quot;id&quot;),
                dataType: 'json',
                success: function (data) {
                    if (data.length &gt; 0) {
                        for (var i = 0; i &lt; data.length; i++) {
                            $(&quot;#grid ul&quot;).append(&quot;&lt;li id=\&quot;&quot; + data[i][&quot;id&quot;] + &quot;\&quot;&gt;&lt;strong&gt;&quot; + data[i][&quot;adSoyad&quot;] + &quot;&lt;/strong&gt; &quot; + data[i][&quot;icerik&quot;] + &quot;&lt;/li&gt;&quot;);
                            $(&quot;#grid ul li:last&quot;).fadeOut().fadeIn();
                        }
                    }
                }
            });
        }
    }
&lt;/script&gt;
</pre>
<p>Gördüğünüz gibi sadece pencere aktif olunduğunda bir ajax sorgusu yapıyor, varsa güncel verileri alıyor ve kullanıyoruz. Burada ajax isteğimizi yaparken ekranda ki son kaydın id sinide gönderiyoruz ki veritabanından sorgulama yaparken o id den büyükleri yani güncelleri bulabilelim.</p>
<p>Sonuç olarak; kullanıcı sekmeler arasında dolaşırken bizim sitemizin bulunduğu sekmeye her gelmesinde veriler aynı FaceBook&#8217; da ki gibi güncellenmiş olacak. Burada ben olayın mantığını basitçe anlatmak istedim. Bu yöntemi iyileştirmek ve geliştirmek de mümkün ;)</p>
<p>Demo için, <a href="http://95.0.146.135/windowFocusAjaxPush/yorum/create" target="_blank">buradan</a> kayıt girebilir, <a href="http://95.0.146.135/windowFocusAjaxPush/" target="_blank">şuradan</a> da olayı görüntüleyebilirsiniz. Projenin çalışır halini <a href="http://www.apostylee.com/wp-content/uploads/2011/06/windowFocusAjaxPush.zip">buradan</a> indirebilirsiniz.</p>
<div class="shr-publisher-1601"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/jquery-ile-laz-isi-ajax-push/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Mvc 3 ile Ziyaretçi Defteri</title>
		<link>http://www.apostylee.com/mvc-3-ile-ziyaretci-defteri/</link>
		<comments>http://www.apostylee.com/mvc-3-ile-ziyaretci-defteri/#comments</comments>
		<pubDate>Tue, 17 May 2011 13:52:33 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ado.net]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[code-first]]></category>
		<category><![CDATA[crud]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mvc3]]></category>
		<category><![CDATA[sql compact 4]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=1432</guid>
		<description><![CDATA[Çok sevdiğim bir öğrenci arkadaşım, &#8220;abi ziyaretçi defteri yapar mısın bana ?&#8221; dedi,  yaparım dedim. Ne kadar sürer dedi, taş patlasa 1 saat dedim. Mvc 3 sağolsun 15 dakika da istediğimiz özelliklerdeki ziyaretçi defterini yaptık :) Yeni başlayan arkadaşların işine yarar diye bu örneği paylaşmak istedim. Bu basit defterde, code-first ile model ve doğrulama (validation), [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Çok sevdiğim bir öğrenci arkadaşım, &#8220;abi ziyaretçi defteri yapar mısın bana ?&#8221; dedi,  yaparım dedim. Ne kadar sürer dedi, taş patlasa 1 saat dedim. <a href="http://www.apostylee.com/tag/mvc3/" target="_blank">Mvc 3 </a>sağolsun 15 dakika da istediğimiz özelliklerdeki ziyaretçi defterini yaptık :) Yeni başlayan arkadaşların işine yarar diye bu örneği paylaşmak istedim. Bu basit defterde, code-first ile model ve doğrulama (validation), <a href="http://www.apostylee.com/category/jquery/" target="_blank">jQuery </a>Ajax ve sql compact 4.0 kullandık. Örneği <a href="http://www.apostylee.com/wp-content/uploads/2011/05/ziyaretciDefteri.zip" target="_blank">buradan</a> indirebilirsiniz, umarım faydalı olur.<br />
<a href="http://www.apostylee.com/wp-content/uploads/2011/05/asp.net-razor-view-engine-mvc3.jpg"><img class="size-medium wp-image-1417 aligncenter" title="asp.net-razor-view-engine-mvc3" src="http://www.apostylee.com/wp-content/uploads/2011/05/asp.net-razor-view-engine-mvc3-300x254.jpg" alt="" width="300" height="254" /></a></p>
<p style="text-align: center;"><span style="color: #888888;"><small>Bu görseli başka bir yazı için hazırlamıştım, sanırım bundan sonra sık sık kullanacam, çok güzel oldu yav :)</small></span><span id="more-1432"></span></p>
<p><a href="http://www.apostylee.com/wp-content/uploads/2011/05/default.png"><img class="size-large wp-image-1433 aligncenter" title="default" src="http://www.apostylee.com/wp-content/uploads/2011/05/default-600x465.png" alt="" width="600" height="465" /></a><a href="http://www.apostylee.com/wp-content/uploads/2011/05/yoneticiLogin.png"></a><a href="http://www.apostylee.com/wp-content/uploads/2011/05/mesajForm.png"><img class="aligncenter" title="mesajForm" src="http://www.apostylee.com/wp-content/uploads/2011/05/mesajForm-600x465.png" alt="" width="600" height="465" /></a><img class="size-large wp-image-1437 aligncenter" title="yoneticiLogin" src="http://www.apostylee.com/wp-content/uploads/2011/05/yoneticiLogin-600x465.png" alt="" width="600" height="465" /><a href="http://www.apostylee.com/wp-content/uploads/2011/05/yoneticiEditForm.png"><img class="size-large wp-image-1436 aligncenter" title="yoneticiEditForm" src="http://www.apostylee.com/wp-content/uploads/2011/05/yoneticiEditForm-600x465.png" alt="" width="600" height="465" /></a><a href="http://www.apostylee.com/wp-content/uploads/2011/05/yoneticiEdit.png"><img class="size-large wp-image-1435 aligncenter" title="yoneticiEdit" src="http://www.apostylee.com/wp-content/uploads/2011/05/yoneticiEdit-600x465.png" alt="" width="600" height="465" /></a></p>
<div class="shr-publisher-1432"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/mvc-3-ile-ziyaretci-defteri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery ile performans hareketleri – 3</title>
		<link>http://www.apostylee.com/jquery-ile-performans-hareketleri-3/</link>
		<comments>http://www.apostylee.com/jquery-ile-performans-hareketleri-3/#comments</comments>
		<pubDate>Sun, 08 May 2011 13:50:14 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[menü]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[tree]]></category>
		<category><![CDATA[trick]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=1380</guid>
		<description><![CDATA[Bir menümüz var diyelim, kullanıcı herhangi bir elemana tıkladı ve o sayfaya gitti. Kullanıcının nerede olduğu göstermek için menüden ilgili bölümü işaretlememiz yada bir şekilde belli etmemiz gerekiyor. Yada bir kategori menümüz var ve kategorilerin alt kategorileri şeklinde de bir hiyerarşimiz bulunuyor, kategori seçildiğinde altındaki diğer kategorileride belli etmemiz gerekiyor. İşte bu tip seçme durumlarında [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Bir menümüz var diyelim, kullanıcı herhangi bir elemana tıkladı ve o sayfaya gitti. Kullanıcının nerede olduğu göstermek için menüden ilgili bölümü işaretlememiz yada bir şekilde belli etmemiz gerekiyor. Yada bir kategori menümüz var ve kategorilerin alt kategorileri şeklinde de bir hiyerarşimiz bulunuyor, kategori seçildiğinde altındaki diğer kategorileride belli etmemiz gerekiyor. İşte bu tip seçme durumlarında jQuery ile işimizi çok basit bir şekilde görüyoruz. Bunu asp, php vb.. dillerle yapmak için heleki menü dinamik oluşmuyorsa kaç satır yazmanız gerekiyor tahmin bile edemiyorum, basit bir hesapla menüdeki eleman sayıları kadar, yani çOOook. Lafı uzatmadan örneklerimize geçiyoruz. Unutmadan <a href="http://www.apostylee.com/jquery-ile-performans-hareketleri-1/" target="_blank" title="jquery">buradaki</a> ve <a href="http://www.apostylee.com/jquery-ile-performans-hareketleri-2/" target="_blank" title="jquery">buradaki</a> hareketlere göz atmanızda fayda var ;)<br />
<a href="http://www.apostylee.com/wp-content/uploads/2011/04/jquery_logo1.png"><img src="http://www.apostylee.com/wp-content/uploads/2011/04/jquery_logo1-600x147.png" alt="" title="jquery_logo" width="600" height="147" class="alignnone size-large wp-image-1312" /></a><span id="more-1380"></span></p>
<pre class="brush: xml; title: ; notranslate">
&lt;div class=&quot;ornekMenu&quot;&gt;
        &lt;h1&gt;Örnek 1&lt;/h1&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;?link=kategori1&quot;&gt;kategori 1&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;?link=kategori2&quot;&gt;kategori 2&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;?link=kategori3&quot;&gt;kategori 3&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;?link=kategori4&quot;&gt;kategori 4&lt;/a&gt;
                &lt;ul&gt;
                    &lt;li&gt;&lt;a href=&quot;?link=kategori6&quot;&gt;alt kategori 1&lt;/a&gt;&lt;/li&gt;
                    &lt;li&gt;&lt;a href=&quot;?link=kategori7&quot;&gt;alt kategori 2&lt;/a&gt;&lt;/li&gt;
                    &lt;li&gt;&lt;a href=&quot;?link=kategori8&quot;&gt;alt kategori 3&lt;/a&gt;&lt;/li&gt;
                &lt;/ul&gt;
            &lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;?link=kategori9&quot;&gt;alt kategori 5&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/div&gt;

    &lt;div class=&quot;ornekMenu2&quot;&gt;
        &lt;h1&gt;Örnek 2 &lt;small&gt;alt kategorileride seçme&lt;/small&gt;&lt;/h1&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;?link=kategori1&quot;&gt;kategori 1&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;?link=kategori2&quot;&gt;kategori 2&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;?link=kategori3&quot;&gt;kategori 3&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;?link=kategori4&quot;&gt;kategori 4&lt;/a&gt;
                &lt;ul&gt;
                    &lt;li&gt;&lt;a href=&quot;?link=kategori6&quot;&gt;alt kategori 1&lt;/a&gt;&lt;/li&gt;
                    &lt;li&gt;&lt;a href=&quot;?link=kategori7&quot;&gt;alt kategori 2&lt;/a&gt;&lt;/li&gt;
                    &lt;li&gt;&lt;a href=&quot;?link=kategori8&quot;&gt;alt kategori 3&lt;/a&gt;

                        &lt;ul&gt;
                            &lt;li&gt;&lt;a href=&quot;?link=kategori10&quot;&gt;alt alt kategori 1&lt;/a&gt;&lt;/li&gt;
                            &lt;li&gt;&lt;a href=&quot;?link=kategori11&quot;&gt;alt alt kategori 2&lt;/a&gt;&lt;/li&gt;
                            &lt;li&gt;&lt;a href=&quot;?link=kategori12&quot;&gt;alt alt kategori 3&lt;/a&gt;
                                &lt;ul&gt;
                                    &lt;li&gt;&lt;a href=&quot;?link=kategori13&quot;&gt;alt alt alt kategori 1&lt;/a&gt;&lt;/li&gt;
                                    &lt;li&gt;&lt;a href=&quot;?link=kategori14&quot;&gt;alt alt alt kategori 2&lt;/a&gt;&lt;/li&gt;
                                &lt;/ul&gt;
                            &lt;/li&gt;
                        &lt;/ul&gt;

                    &lt;/li&gt;
                &lt;/ul&gt;
            &lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;?link=kategori9&quot;&gt;alt kategori 5&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/div&gt;
</pre>
<p>Yukarıda 2 tane menümüzün var, tıkladığımız elemana gitmek için aşağıdaki kodlarımızı yazıyoruz. Unutmadan aşağıda ki kodda parametre değişkenin karşısına dinamik olarak da querystring değerini alabiliriz ;)</p>
<pre class="brush: jscript; title: ; notranslate">
    &lt;script type=&quot;text/javascript&quot;&gt;
        $(document).ready(function () {

            //---- buraya dinamik olarak querystringi ekleyebilirsiniz. eğer eklerseniz aşağıdaki getQuerystring fonksiyonunu silebilirsiniz.
            var parametre = &quot;?link=&quot; + getQuerystring(&quot;link&quot;);

            //----------------------------------------------------------------------
            $(&quot;.ornekMenu ul li a[href^='&quot; + parametre + &quot;']&quot;).css({ backgroundColor: 'red', color: 'white' });

            //-----------------------------------------------------------------------------------
            $(&quot;.ornekMenu2 ul li a[href^='&quot; + parametre + &quot;']&quot;).each(function () {
                var t = $(this);
                var style = { backgroundColor: 'red', color: 'white' };
                t.css(style);

                if (t.parent().find(&quot;ul&quot;).length != 0) {
                    t.parent().find(&quot;ul&quot;).css(style);
                }

            });

        });

        function getQuerystring(key, default_) {
            if (default_ == null) default_ = &quot;&quot;;
            key = key.replace(/[\[]/, &quot;\\\[&quot;).replace(/[\]]/, &quot;\\\]&quot;);
            var regex = new RegExp(&quot;[\\?&amp;]&quot; + key + &quot;=([^&amp;#]*)&quot;);
            var qs = regex.exec(window.location.href);
            if (qs == null)
                return default_;
            else
                return qs[1];
        }
    &lt;/script&gt;
</pre>
<p><a href="http://www.apostylee.com/wp-content/uploads/2011/05/HTMLPage2.htm" target="_blank">Örneklerin Demosu buradan bakabilirsiniz.</a> Çok zevkli bir yazı oldu, umarım faydalı olur. Bir hatırlatma yapayım; bu tür yazılarda asıl öğrenmeniz gereken işleyişin mantığı, yoksa bu kodları ezberlemenin yada yöntemi ezberlemenin size katacağı hiç bir şey yok, sadece anlık probleminizi çözersiniz o kadar !</p>
<div class="shr-publisher-1380"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/jquery-ile-performans-hareketleri-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery ile performans hareketleri – 2</title>
		<link>http://www.apostylee.com/jquery-ile-performans-hareketleri-2/</link>
		<comments>http://www.apostylee.com/jquery-ile-performans-hareketleri-2/#comments</comments>
		<pubDate>Thu, 05 May 2011 13:05:19 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[dropdown]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[radio]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[trick]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=1371</guid>
		<description><![CDATA[İlk yazımızda count işlemlerine bakmıştık. Bu yazımızda ise başımızda ki en büyük sıkıntılardan biri olan selectbox, radiobutton, checkbox gibi elemanların form düzenleme ekranında yada benzeri bir durumda ilgili seçeneğin nasıl seçileceğine yada işaretleneceğine değineceğiz. Yani kullanıcıya önceden seçtirdiğimiz yada işaretlettiğimiz seçeneğin tekrar kullanıcıya gösterildiğinde ilgili değerlerin seçilmesi olayından bahsediyorum :) (cümleler epey bir devrildi) Örneğin [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://www.apostylee.com/jquery-ile-performans-hareketleri-1/" target="_blank" title="jquery">İlk yazımızda</a> <strong>count</strong> işlemlerine bakmıştık. Bu yazımızda ise başımızda ki en büyük sıkıntılardan biri olan selectbox, radiobutton, checkbox gibi elemanların form düzenleme ekranında yada benzeri bir durumda ilgili seçeneğin nasıl seçileceğine yada işaretleneceğine değineceğiz. Yani kullanıcıya önceden seçtirdiğimiz yada işaretlettiğimiz seçeneğin tekrar kullanıcıya gösterildiğinde ilgili değerlerin seçilmesi olayından bahsediyorum :) (cümleler epey bir devrildi) Örneğin kullanıcı dinamik oluşturmadığımız, içinde 5 tane eleman olan bir selectbox dan bir seçenek seçti ve kaydetti. Kullanıcının formu düzenlemesi gerektiğinde bir if bloğuyla türlü taklalar atıp ilgili seçeneğe &#8220;selected&#8221; niteliğini (attribute) eklememiz gerekiyor. Bu durum diğer elementler içinde geçerli bir durum. Mesela 5 seçenekli bir checkbox grubumuz var, kullanıcı içlerinden herhangi 3 tanesini işaretledi ve tekrar düzenlemek istedi, if senaryosunı aynen tekrarlamamız gerekiyor. Bu noktada yine <a href="http://api.jquery.com/category/selectors/" target="_black"><strong>jQuery Selector()</strong></a> imdadımıza yetişiyor ve ufak kod parçalarıyla taklalardan uzaklaşıyoruz. Hemen örneklerimize göz atalım;<br />
<a href="http://www.apostylee.com/wp-content/uploads/2011/04/jquery_logo1.png"><img src="http://www.apostylee.com/wp-content/uploads/2011/04/jquery_logo1-600x147.png" alt="" title="jquery_logo" width="600" height="147" class="alignnone size-large wp-image-1312" /></a><span id="more-1371"></span></p>
<pre class="brush: xml; title: ; notranslate">
    &lt;div&gt;
        &lt;div class=&quot;ornekSelect&quot;&gt;
            &lt;h1&gt;Selectbox&lt;/h1&gt;
            &lt;select&gt;
                &lt;option&gt;veri 1&lt;/option&gt;
                &lt;option&gt;veri 2&lt;/option&gt;
                &lt;option&gt;veri 3&lt;/option&gt;
                &lt;option&gt;veri 4&lt;/option&gt;
            &lt;/select&gt;
        &lt;/div&gt;

        &lt;div class=&quot;ornekCheckbox&quot;&gt;
            &lt;h1&gt;Check Box&lt;/h1&gt;
            &lt;input type=&quot;checkbox&quot; name=&quot;name&quot; value=&quot;1&quot; /&gt;
            &lt;input type=&quot;checkbox&quot; name=&quot;name&quot; value=&quot;2&quot; /&gt;
            &lt;input type=&quot;checkbox&quot; name=&quot;name&quot; value=&quot;3&quot; /&gt;
            &lt;input type=&quot;checkbox&quot; name=&quot;name&quot; value=&quot;4&quot; /&gt;
        &lt;/div&gt;

        &lt;div class=&quot;ornekRadio&quot;&gt;
            &lt;h1&gt;Radio Button&lt;/h1&gt;
            &lt;input type=&quot;radio&quot; name=&quot;name&quot; value=&quot;1&quot; /&gt;
            &lt;input type=&quot;radio&quot; name=&quot;name&quot; value=&quot;2&quot; /&gt;
            &lt;input type=&quot;radio&quot; name=&quot;name&quot; value=&quot;3&quot; /&gt;
            &lt;input type=&quot;radio&quot; name=&quot;name&quot; value=&quot;4&quot; /&gt;
        &lt;/div&gt;
    &lt;/div&gt;
</pre>
<p>Yukarıda sırasıyla; select, checkbox ve radio elementlerini görüyoruz. Gelen değişkenlerle seçimlerimizi aşağıdaki kodlarla gerçekleştiriyoruz.</p>
<pre class="brush: jscript; title: ; notranslate">
    &lt;script type=&quot;text/javascript&quot;&gt;
        $(document).ready(function () {
            //------------------------------------
            $(&quot;.ornekSelect select&quot;).val(&quot;veri 3&quot;);

            //------------------------------------
            var secilecek = &quot;1,3&quot;;
            $(&quot;.ornekCheckbox input[type=checkbox]&quot;).each(function () {
                if (secilecek.indexOf($(this).val()) != -1) {
                    $(this).attr(&quot;checked&quot;, true);
                }
            });

            //------------------------------------
            $(&quot;.ornekRadio input[type=radio][value=4]&quot;).attr(&quot;checked&quot;,true).after(&quot;Seni seçtim !&quot;);
        });
    &lt;/script&gt;
</pre>
<p>Uzun uzadıya kodlarla yaptığımız işlerin kısacık kod parçalarıyla çok daha kolay bir şekilde nasıl yapıldığını görmüş olduk. Umarım faydalı olmuştur :)</p>
<div class="shr-publisher-1371"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/jquery-ile-performans-hareketleri-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery ile performans hareketleri &#8211; 1</title>
		<link>http://www.apostylee.com/jquery-ile-performans-hareketleri-1/</link>
		<comments>http://www.apostylee.com/jquery-ile-performans-hareketleri-1/#comments</comments>
		<pubDate>Thu, 05 May 2011 10:08:54 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[performans]]></category>
		<category><![CDATA[trick]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=1359</guid>
		<description><![CDATA[Bu yazı serisinde jQuery ile nasıl performans çakallıkları yapabiliriz bunlara değineceğim. Zaman zaman çok ufak nüanslar ile ciddi yüklerden kurtulabiliyoruz, önemli olan bu nüansları görebilmek. Yaptığım işlerde jQuery&#8217; i sadece bu amaçlarla kullandığım bile oluyor. Neyse lafı fazla uzatmadan ilk hareketimize geçelim. Satır sayısı yani veritabanından gelen kayıtların sayısı çoğu zaman ihtiyaç duyduğumuz bir veridir. [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Bu yazı serisinde jQuery ile nasıl performans çakallıkları yapabiliriz bunlara değineceğim. Zaman zaman çok ufak nüanslar ile ciddi yüklerden kurtulabiliyoruz, önemli olan bu nüansları görebilmek. Yaptığım işlerde jQuery&#8217; i sadece bu amaçlarla kullandığım bile oluyor. Neyse lafı fazla uzatmadan ilk hareketimize geçelim.</p>
<p><a href="http://www.apostylee.com/wp-content/uploads/2011/04/jquery_logo1.png"><img src="http://www.apostylee.com/wp-content/uploads/2011/04/jquery_logo1-600x147.png" alt="" title="jquery_logo" width="600" height="147" class="alignnone size-large wp-image-1312" /></a><br />
<span id="more-1359"></span><br />
Satır sayısı yani veritabanından gelen kayıtların sayısı çoğu zaman ihtiyaç duyduğumuz bir veridir. Bu veriyi veritabanından almak için <a href="http://www.w3schools.com/sql/sql_func_count.asp" target="_blank">Count()</a> fonksiyonunu kullanıyoruz. Karmaşık bir sorgu sonucu aldığımız verileri kullanıcılara sunacağımızı varsayalım, count işlemini yapabilmek için verileri gruplamamız (<a href="http://www.w3schools.com/sql/sql_groupby.asp" target="_blank">group by</a>) gerekebilir yada count için ayrı bir sorgu yazmamız gerekebilir. Bunlar hem ekstra uğraş isteyen hemde ekstra iş yüküdür. Eğer bir grid kontrülü yada datatable benzeri bir yapı kullanıyorsanız direk içindeki verinin satır sayısını alabilirsiniz kullanmıyorsanız jQuery ile html etiketlerini <strong><a href="http://api.jquery.com/length/" target="_blank">lenght</a></strong> ile sayarak sonuca ulaşabilirsiniz. Hemen örnekleyelim;</p>
<pre class="brush: xml; title: ; notranslate">
    &lt;ul class=&quot;ornekLi&quot;&gt;
	    &lt;li&gt;satır 1&lt;/li&gt;
	    &lt;li&gt;satır 2&lt;/li&gt;
	    &lt;li&gt;satır 3&lt;/li&gt;
	    &lt;li&gt;satır 4&lt;/li&gt;
	    &lt;li&gt;satır 5&lt;/li&gt;
    &lt;/ul&gt;

    &lt;table class=&quot;ornekTable&quot;&gt;
        &lt;tr&gt;
            &lt;td&gt;Satır 1&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;Satır 2&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;Satır 3&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;

    &lt;table class=&quot;ornekTable2&quot;&gt;
        &lt;tr&gt;
            &lt;td&gt;Satır 1&lt;/td&gt;
            &lt;td&gt;Satır 2&lt;/td&gt;
            &lt;td&gt;
                &lt;ul&gt;
	                &lt;li&gt;satır 1&lt;/li&gt;
	                &lt;li&gt;satır 2&lt;/li&gt;
	                &lt;li&gt;satır 3&lt;/li&gt;
	                &lt;li&gt;satır 4&lt;/li&gt;
                &lt;/ul&gt;
            &lt;/td&gt;
            &lt;td&gt;Satır 4&lt;/td&gt;
            &lt;td&gt;
                &lt;ul&gt;
	                &lt;li&gt;satır 1&lt;/li&gt;
	                &lt;li&gt;satır 2&lt;/li&gt;
                &lt;/ul&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
</pre>
<p>Yukarıdaki html çıktısında veritabanımızdan gelen verileri listelediğimizi varsayıyoruz.</p>
<pre class="brush: jscript; title: ; notranslate">
    &lt;script type=&quot;text/javascript&quot;&gt;
        $(document).ready(function () {

         alert($(&quot;.ornekLi&quot;).length);
         alert($(&quot;.ornekTable tr&quot;).length);

         $(&quot;.ornekTable2 tr td&quot;).each(function () {
                var t = $(this);
                var count = t.find(&quot;ul li&quot;).length;
                if (count &gt; 0) {
                    t.prepend(&quot;&lt;h5&gt;&quot; + count + &quot; adet&lt;/h5&gt;&quot;);
                }
                else {
                    t.prepend(&quot;&lt;h5&gt;li yok&lt;/h5&gt;&quot;);
                }
            });
        });
    &lt;/script&gt;
</pre>
<p>Bu sayede count işlemi için sql e bulaşmamış olduk. Hatta karmaşık durumlarda bile jquery&#8217; nin <a href="http://api.jquery.com/category/selectors/" target='_blank'>seçicileri </a>sayesinde bir sürü kod yazmaktan kurtulup işlemimizi gerçekleştirdik. Umarım faydalı bir bilgi olmuştur, ilerleyen günlerde benzer yöntemler ile geri geleceğim ;)</p>
<div class="shr-publisher-1359"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/jquery-ile-performans-hareketleri-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
