سؤال

ولقد شكل حدد العنصر الذي، عند تحديد قيمة معينة، وتبديل عنصرين آخرين في الصفحة (زوج دينارا / يوم).

ويتم تشغيل الحدث بشكل صحيح، ولكن لا أستطيع الحصول على العناصر للتبديل - ملاحظة أستخدمه محددات الطبقة لأن عدد هؤلاء "مجموعات" عنصر على الصفحة هو متغير. هنا هو رمز بلادي:

$(".lender_id").change(function () {
if($(this).val()=='45')
   {
   $(this).next(".lender_other1").toggle();
   $(this).next(".lender_other2").toggle();
   }
});

وlender_id هي لغتي حدد فئة العنصر، الكود على النحو التالي (كما ورد هذه المجموعة عنصر يمكن أن تظهر عدة مرات على الصفحة):

<dt>Lender</dt>
<dd><select name="lender_id[1]" class="lender_id">
<option value="1">Value</option>
<option value="45">Special Value</option>
</select></dd>

<dt class="lender_other1" style="display:none;">Lender Name</dt>
<dd class="lender_other2" style="display:none;">
<input type="text" name="lender_other[1]" value="" /></dd>

<dt>Lender</dt>
<dd><select name="lender_id[2]" class="lender_id">
<option value="1">Value</option>
<option value="45">Special Value</option>
</select></dd>

<dt class="lender_other1" style="display:none;">Lender Name</dt>
<dd class="lender_other2" style="display:none;">
<input type="text" name="lender_other[2]" value="" /></dd>

etc...
هل كانت مفيدة؟

المحلول

وهنا هو ما تريد:

$(".lender_id").change(function() {
    if ($(this).val() == '45') {
        $(this).parent().nextAll(".lender_other1:first, .lender_other2:first").toggle();
    };
});

وتحرير

وأنا الجمع بين محددات الطبقة معا لجعلها أكثر كفاءة.

نصائح أخرى

next() لا تفعل ما كنت أعتقد أنه يفعل. محاولة $(this).parent('dl').find('.lender_other1'). أو، y'know، ربما فقط $('.lender_other1').

و.next () ترجع فقط في المباراة المقبلة، لذلك أعتقد أنك يجب أن تستخدم .nextAll ()

http://docs.jquery.com/Traversing/nextAll#expr

شريحة (بداية، نهاية) طريقة . هذه هي الطريقة الصحيحة وفقا لشريط فيديو لجون ريسيغ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top