JQuery-da eng yaqin () ning darajasi bir xil darajada ishlamayapti

Muammo:

.my-textarea bilan eng yaqin elementni tanlash uchun (tugmani bosganingizdan so'ng - bu qism OK), lekin prev() dan foydalanish har doim ham mumkin, chunki kod dinamik. Siz yordam bera olasizmi?

Batafsil:

Ushbu HTML kod bor:

<div class="row">
    <div class="label">Description:</div>
    


    <button type="button" class="my-submit" name="my-submit">Save</button>
</div>

Va mening JS kodim ("my-submit" sekin urish hodisasi bilan tugmachada):

var text = $ (this) .closest (". my-textarea"). val ();

Lekin u ishlamayapti. Men aniqlanmayapman.

Agar harakat qilsam: -

var text = $ (bu) .prev (). val ();

Matn maydonining matnini olaman, lekin aytib o'tganimdek, mening kodim dinamik va elementlarning tartibi va soni o'zgaradi. Ya'ni, prev() parametrdan tashqari.

eng yaqin() qanday ishlashi haqida har qanday fikr bormi?

1
@TeaTime Men li elementlarda bir nechta shakllar bor, eng yaqin qidirish usulini qo'llashim kerak.
qo'shib qo'ydi muallif John Doeherskij, manba
@TeaTime Men li elementlarda bir nechta shakllar bor, eng yaqin qidirish usulini qo'llashim kerak.
qo'shib qo'ydi muallif John Doeherskij, manba
eng yaqin hujjatlarni o'qing, pastga qarab ketadi, birodarlarini e'tiborsiz qoldiradi, oldingi , keyingi yoki siblings qo'shni elementlarni topish
qo'shib qo'ydi muallif empiric, manba
$ (this) .closet (". my-textarea") sinf nomini ko'rsatish uchun birinchi qo'ng'iroqda . yo'qolgan.
qo'shib qo'ydi muallif Toxide82, manba
birodarlar dan foydalaning. Siz xohlagan narsani filtrlash uchun selektorni topshirishingiz mumkin, masalan. $ (this) .siblings ('textarea')
qo'shib qo'ydi muallif evolutionxbox, manba
birodarlar dan foydalaning. Siz xohlagan narsani filtrlash uchun selektorni topshirishingiz mumkin, masalan. $ (this) .siblings ('textarea')
qo'shib qo'ydi muallif evolutionxbox, manba
this tugmachasi bo'lsa, $ (this) .parent() ni toping. Find ('textarea') .
qo'shib qo'ydi muallif Fabian Klötzl, manba
this tugmachasi bo'lsa, $ (this) .parent() ni toping. Find ('textarea') .
qo'shib qo'ydi muallif Fabian Klötzl, manba
Eng yaqin tanlash o'rniga, nima uchun siz yuborishni xohlagan matnga murojaat qilmasligingiz kerak? Shunday qilib, bu to'g'ri bo'lganiga ishonch hosil qilishingiz mumkin.
qo'shib qo'ydi muallif TeaTime, manba
VALUE() funktsiyasini topish uchun $ (this) .parent() funktsiyasini toping ('textarea [name = my-textarea]'). val ()
qo'shib qo'ydi muallif Venkatesh K, manba
VALUE() funktsiyasini topish uchun $ (this) .parent() funktsiyasini toping ('textarea [name = my-textarea]'). val ()
qo'shib qo'ydi muallif Venkatesh K, manba

6 javoblar

Men har doim ota-onani va sinfga ega bo'lgan bolani izlashni tanlayman. Shunday qilib, sizning elementingiz ota-onangizning deyarli har bir joyiga joylashtirilishi mumkin.

$(this).parent().find('.my-textarea').val();
5
qo'shib qo'ydi
qiziqarli yondashuv. jQuery uchun birodarlarga qaraganda kamroq vaqt samaradorligi/jarayoni bormi?
qo'shib qo'ydi muallif John Doeherskij, manba
@JohnDoeherskij Sinov o'tkazmadim, ammo kelajakda DOMni o'zgartirsangiz, bu funktsiyani o'zgartirish shart emas.
qo'shib qo'ydi muallif Justinas, manba

Men har doim ota-onani va sinfga ega bo'lgan bolani izlashni tanlayman. Shunday qilib, sizning elementingiz ota-onangizning deyarli har bir joyiga joylashtirilishi mumkin.

$(this).parent().find('.my-textarea').val();
5
qo'shib qo'ydi
qiziqarli yondashuv. jQuery uchun birodarlarga qaraganda kamroq vaqt samaradorligi/jarayoni bormi?
qo'shib qo'ydi muallif John Doeherskij, manba
@JohnDoeherskij Sinov o'tkazmadim, ammo kelajakda DOMni o'zgartirsangiz, bu funktsiyani o'zgartirish shart emas.
qo'shib qo'ydi muallif Justinas, manba

closest() o'rniga birodarlar() dan foydalaning: -

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

$('.my-submit').click(function(e){
  e.preventDefault();
  var text = $(this).siblings('textarea').val();
  console.log(text);
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
    <div class="label">Description:</div>
    


    <button type="button" class="my-submit" name="my-submit">Save</button>
</div>
</div> </div>
3
qo'shib qo'ydi
Rahmat, bu ishlaydi. Bu .parent() ni ishlatishdan yaxshiroqmi? Find ('textarea') ?
qo'shib qo'ydi muallif John Doeherskij, manba
@JohnDoeherskij birodarlaringiz sizning holatlaringizda yaxshiroqdir. .parent() ni toping ('textarea') faqat yuqori (murakkablik) hosil qiladi.
qo'shib qo'ydi muallif Alive to Die, manba
@ FabianKlötzl siz to'g'ri. Bu tahrir
qo'shib qo'ydi muallif Alive to Die, manba
.siblings() yanada umumiy bo'lishi mumkin.
qo'shib qo'ydi muallif Fabian Klötzl, manba

closest() o'rniga birodarlar() dan foydalaning: -

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

$('.my-submit').click(function(e){
  e.preventDefault();
  var text = $(this).siblings('textarea').val();
  console.log(text);
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
    <div class="label">Description:</div>
    


    <button type="button" class="my-submit" name="my-submit">Save</button>
</div>
</div> </div>
3
qo'shib qo'ydi
Rahmat, bu ishlaydi. Bu .parent() ni ishlatishdan yaxshiroqmi? Find ('textarea') ?
qo'shib qo'ydi muallif John Doeherskij, manba
@JohnDoeherskij birodarlaringiz sizning holatlaringizda yaxshiroqdir. .parent() ni toping ('textarea') faqat yuqori (murakkablik) hosil qiladi.
qo'shib qo'ydi muallif Alive to Die, manba
@ FabianKlötzl siz to'g'ri. Bu tahrir
qo'shib qo'ydi muallif Alive to Die, manba
.siblings() yanada umumiy bo'lishi mumkin.
qo'shib qo'ydi muallif Fabian Klötzl, manba

Siz buni sinfdan foydalanib ko'rsatishingiz kerak

closest will traverse up the DOM tree to look for the element, while in this case textarea is sibling of the button.

 $('.my-submit').click(function(){
    var text = $(this).siblings('.my-textarea').val();
    alert(text)
    })

DEMO

3
qo'shib qo'ydi
@brk - uzr, men tuzatib turaman! O'qishni o'rganish kerak
qo'shib qo'ydi muallif Darren Sweeney, manba
@DarrenSweeney DOMni tekshiring
qo'shib qo'ydi muallif brk, manba

Siz buni sinfdan foydalanib ko'rsatishingiz kerak

closest will traverse up the DOM tree to look for the element, while in this case textarea is sibling of the button.

 $('.my-submit').click(function(){
    var text = $(this).siblings('.my-textarea').val();
    alert(text)
    })

DEMO

3
qo'shib qo'ydi
@brk - uzr, men tuzatib turaman! O'qishni o'rganish kerak
qo'shib qo'ydi muallif Darren Sweeney, manba
@DarrenSweeney DOMni tekshiring
qo'shib qo'ydi muallif brk, manba
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb