Jquery Yardım - Find Method

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    Dinamik olarak element yaratıyorum ve ama onun içinde ki değeri alabilmek tıklayınca.

    Ama alttaki kod bana herzaman en üstte olan id değerini veriyor.

     

    Nasıl mı?

    Alttaki kodda bing'e tıklayıncada google değerini veriyor google'a da aynen öyle

    html:

    <a href="javascript:ekle();">Ekle</a>

            <br />

            <div id="dvEkle">

            </div>

    jquery:

    <script type="text/javascript">

            $(document).ready(function () {

                $('a').click(function () {

                      $("#dvEkle").append("<li class='lK'>yahoo<input type='hidden' value='yahoo' /></li>"

                      + "<li class='lK'>google<input type='hidden' value='google' /></li>"

                      + "<li class='lK'>bing<input type='hidden' value='bing' /></li>");

                });

                $('.lK').live('click', function () {

                    alert($(this).parent().find("input").val());

                });

            });

        </script>

     

     

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    Farklı bir yolla çözdüm.

    input eklemek yerine <li> etiketine attr ekledim ve hiç parent ve find ile uğraşmadan alttaki gibi id değerini verip alabildim daha sonradan

    alert($(this).attr("v"));

     

    _____________________

     

    2 saat uğraşmışımdır bi yerden sonra insan mantıklı düşünemiyor. Ama sorunu bi başkasına anlatmak, o sırada başka şeyler düşünmemize yol açabiliyor şuanki gibi :)

     

    Okuldada hiç çalışmadığın bi sınava son dakka kopya kağıdı hazırlarken ezberliyoduk sınavda bakmaya gerek kalmıyodu :)

    Sevgiler saygılar sizlere

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    trampfd
    trampfd's avatar
    Kayıt Tarihi: 10/Mayıs/2006
    Erkek

    ".parent()" ı kaldırırsan düzelir aslında. 

    Bunu dene:

            $(document).ready(function () {
    
                $('a').click(function () {
    
                      $("#dvEkle").append("<li class='IK'>yahoo<input type='hidden' value='yahoo' /></li>"
    
                      + "<li class='IK'>google<input type='hidden' value='google' /></li>"
    
                      + "<li class='IK'>bing<input type='hidden' value='bing' /></li>");
            
    				$('.IK').click(function () {
    
    					alert($(this).find("input").val());
    				});
                        
    			});
            });

    Ehl-i Byte
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    trampfd
    trampfd's avatar
    Kayıt Tarihi: 10/Mayıs/2006
    Erkek
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek

    bu çözer

    --

    edit: düzenleyince sapıttı

    inputları niye koydun özel amacı var mı bilmiyorum da ;

    --

    <a href="javascript:void(0);">Ekle</a>

    <br />

    <div id="dvEkle">

    </div>

     

    <script type="text/javascript">

        $(document).ready(function () {

            $('a').click(function () {

                  $("#dvEkle").append("<li class='lK' id='yahoo'>yahoo</li>"

                  + "<li class='lK' id='google'>google</li>"

                  + "<li class='lK' id='bing'>bing</li>");

            });

            $('.lK').live('click', function () {

                alert($(this).attr("id"));

            });

        });

    </script>

    Ayro tarafından 16/Mar/13 11:43 tarihinde düzenlenmiştir
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek
    trampfd bunu yazdı

    ".parent()" ı kaldırırsan düzelir aslında. 

    Bunu dene:

    $(document).ready(function () {
    
                $('a').click(function () {
    
                      $("#dvEkle").append("
    • yahoo< ="" value="yahoo" />
    "
    
                      + "
    • google< ="" value="google" />
    "
    
                      + "
    • bing< ="" value="bing" />
    ");
            
    				$('.IK').click(function () {
    
    					alert($(this).find("input").val());
    				});
                        
    			});
            });

    evet parent fazlaymış orda. Ama li içinde input olduğu için parent üzerinden gittim aslında denemiş olmam lazım onuda ama .. yada gözden kaçmıştır. teşekkürler yardım için evet çalışıyor:)

     

    zumsuk; sonradan o şekilde çözdüm attr ile. input koymamın özel bi nedeni yoktu el alışkanlığı, muhtemelen düz js kültüründen geldiğimizdendir:)

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    trampfd
    trampfd's avatar
    Kayıt Tarihi: 10/Mayıs/2006
    Erkek

    "Id" attribute üzerinde veri saklamak hatalı bir yaklaşım olur, amacı gereği "id" kontrolün kimliğidir ve sabit bir unique veri almak zorundadır.

    Tam olarak ne yaptığını bilmiyorum ama kontrollerinde veri saklamak istiyorsan "hidden input" aslında tam da aradığın şey, ilk örneğin üzerinden gitmelisin.


    Ehl-i Byte
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek
    trampfd bunu yazdı

    "Id" attribute üzerinde veri saklamak hatalı bir yaklaşım olur, amacı gereği "id" kontrolün kimliğidir ve sabit bir unique veri almak zorundadır.

    Tam olarak ne yaptığını bilmiyorum ama kontrollerinde veri saklamak istiyorsan "hidden input" aslında tam da aradığın şey, ilk örneğin üzerinden gitmelisin.

     

    unique değerler atıyorum bende. Onun dışında kullanımda ne gibi bir problem olabilir? İnput'a atmakla arasında bir fark olabilir mi? Şahsen daha gizli olmasını tercih ederim bende ama gerek input gerek attr olsun isteyen adam hertürlü veriyi görebilir diye düşünüyorum

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    trampfd
    trampfd's avatar
    Kayıt Tarihi: 10/Mayıs/2006
    Erkek
    cemnet bunu yazdı
    trampfd bunu yazdı

    "Id" attribute üzerinde veri saklamak hatalı bir yaklaşım olur, amacı gereği "id" kontrolün kimliğidir ve sabit bir unique veri almak zorundadır.

    Tam olarak ne yaptığını bilmiyorum ama kontrollerinde veri saklamak istiyorsan "hidden input" aslında tam da aradığın şey, ilk örneğin üzerinden gitmelisin.

     

    unique değerler atıyorum bende. Onun dışında kullanımda ne gibi bir problem olabilir? İnput'a atmakla arasında bir fark olabilir mi? Şahsen daha gizli olmasını tercih ederim bende ama gerek input gerek attr olsun isteyen adam hertürlü veriyi görebilir diye düşünüyorum

    Veriyi görmekle alakası yok, zaten html sayfadaki her şey client tarafına gönderildiği için bu tür kullanımda gizlilik ve güvenlik aranmaz, görmek isteyen sayfa kaynağından istediği şeyi görür, bu yüzden veri gizli ise client'a hiç gönderilmemesi gerekir.

    Kullanımında aslında problem yok, kontrolün id attribute'ü veri saklamak için de kullanılabilir fakat bu "doğru" bir kullanım olmamış olur, dediğim gibi sadece bir value saklamak istiyorsan sayfada "hidden input" bunun için var. Doğru kontrolü doğru iş için kullanmak, standartlara uymak her zaman sana artı puan katar. Yoksa sadece günü kurtarmış olursun.

    Bir framework ile çalışmaya başlarsan, ya da MVC gibi bir mimariyle çalışmak zorunda kalırsan bu irili ufaklı şeylerin ne kadar önemli olduğunu daha iyi anlarsın.


    Ehl-i Byte
Toplam Hit: 944 Toplam Mesaj: 9