سؤال

أحاول إضافة فئة إلى إدخال الراديو المحدد ثم إزالة تلك الفئة عند تحديد راديو آخر من نفس النوع

تحتوي أزرار الراديو على فئة "Radio_button" ، لكن لا يمكنني الحصول على الفصل للتغيير مع الرمز أدناه.

  jQuery(".radio_button").livequery('click',function() {  

      $('input.radio_button :radio').focus(updateSelectedStyle);
      $('input.radio_button :radio').blur(updateSelectedStyle);
      $('input.radio_button :radio').change(updateSelectedStyle);
  }
  function updateSelectedStyle() {
      $('input.radio_button :radio').removeClass('focused');
      $('input.radio_button :radio:checked').addClass('focused');
  }
هل كانت مفيدة؟

المحلول

وهو سبب المشكلة تري من مساحة إضافية واحدة في محددات الخاص بك.

وبدلا من:

$('input.radio_button :radio')

وأردت أن أكتب:

$('input.radio_button:radio')

نصائح أخرى

وأنت قد ترغب أيضا في الاستفادة من chainability مسج للحد من كمية العمل الذي تقوم به. (بدلا من العثور على إعادة هذه الأزرار مرارا وتكرارا.) شيء من هذا القبيل:

  jQuery(".radio_button").livequery('click',function() {  
    $('input.radio_button:radio')
      .focus(updateSelectedStyle)
      .blur(updateSelectedStyle)
      .change(updateSelectedStyle);
  });
  function updateSelectedStyle() {
    $('input.radio_button:radio')
      .removeClass('focused')
      .filter(':checked').addClass('focused');
  }
  • امنح كل زر اختيار معرفًا فريدًا
  • قم بتمرير المعرف عند النقر
  • قم بإزالة اسم الفئة "المركّز عليه" لكافة أزرار الاختيار التي لها نفس الفئة
  • أضف الفئة "المركّزة" إلى زر الاختيار بالمعرف الذي قمت بتمريره

أولا، وأنا أتفق مع الإجابة رينيه Saarsoo حول مساحة إضافية.

وثانيا، تحاول أيضا إلى تطبيق أسلوب لزر الاختيار التسمية؟ ربما كنت ترغب في التفاف الأزرار والتسميات معا بطريقة أو بأخرى. على سبيل المثال:

<span class="radiowrapper"><input type="radio" name="system" value="1" class="radio_button"> 1</span>
<br>
<span class="radiowrapper"><input type="radio" name="system" value="2" class="radio_button"> 2</span>

وبعد ذلك تخلص من المكالمات إضافية في الدعوة livequery ونقل رمز من updateSelectedStyle () وظيفة في الدعوة livequery الخاص بك (لاحظت القضايا مع IE خلاف ذلك):

   jQuery(".radio_button").livequery('click',function() {
        $('input.radio_button:radio').parent(".radiowrapper").removeClass('focused');
        $('input.radio_button:radio:checked').parent(".radiowrapper").addClass('focused');
   });
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top