Jquery Yardım - Find Method
-
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>
-
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
-
".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()); }); }); }); -
-
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 -
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:)
-
"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.
-
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
-
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.
