2016-07-29 10 views
0
$('.delivery_option').click(function() { 
    var current = $('.active-radio-label'); 
    if (current.length) 
     current.removeClass('active-radio-label'); 
    $(this).addClass('active-radio-label'); 

    $(this).('.delivery_option span').addClass('checked'); 
}); 

Ich habe ein Problem mit der letzten Zeile $(this).('.delivery_option span').addClass('checked');jQuery diese Funktion

ich zum span zu zeigen versuchen, die in .delivery_option Klasse. Nachdem jemand .delivery_option

HTML klicken:

<div class="delivery_options"> 
    <div class="delivery_option item"> 
    <div> 
     <table class="resume table table-bordered resp_table "> 
     <tbody> 
      <tr> 
      <td class="delivery_option_radio"> 
       <div class="radio" id="uniform-delivery_option_1349_0"><span><input type="radio" value="199," data-id_address="1349" data-key="199," name="delivery_option[1349]" class="delivery_option_radio" id="delivery_option_1349_0"></span></div> 
      </td> 
      <td class="delivery_option_logo"> 
       <img alt="Odbiór osobisty" src="/img/s/199.jpg" class="order_carrier_logo"> 
      </td> 
      <td class="white_space_normal"> 
       <strong>Odbiór osobisty</strong> 
       <br>&nbsp;- sklep Konstantynów Łódzki 
      </td> 
      <td class="delivery_option_price"> 
       <div class="delivery_option_price"> 
       Za darmo! 
       </div> 
      </td> 
      </tr> 
     </tbody> 
     </table> 
    </div> 
    </div> 
    <!-- end delivery_option --> 
    <div class="delivery_option alternate_item"> 
    <div> 
     <table class="resume table table-bordered resp_table "> 
     <tbody> 
      <tr> 
      <td class="delivery_option_radio"> 
       <div class="radio" id="uniform-delivery_option_1349_1"><span class="checked"><input type="radio" checked="checked" value="205," data-id_address="1349" data-key="205," name="delivery_option[1349]" class="delivery_option_radio" id="delivery_option_1349_1"></span></div> 
      </td> 
      <td class="delivery_option_logo"> 
       <img alt="Inpost/DPD" src="/img/s/205.jpg" class="order_carrier_logo"> 
      </td> 
      <td class="white_space_normal"> 
       <strong>Inpost/DPD</strong> 
       <br>&nbsp;- przelew 
      </td> 
      <td class="delivery_option_price"> 
       <div class="delivery_option_price"> 
       16,00 zł (brutto) </div> 
      </td> 
      </tr> 
     </tbody> 
     </table> 
    </div> 
    </div> 
    <!-- end delivery_option --> 
    <div class="delivery_option item"> 
    <div> 
     <table class="resume table table-bordered resp_table "> 
     <tbody> 
      <tr> 
      <td class="delivery_option_radio"> 
       <div class="radio" id="uniform-delivery_option_1349_2"><span><input type="radio" value="206," data-id_address="1349" data-key="206," name="delivery_option[1349]" class="delivery_option_radio" id="delivery_option_1349_2"></span></div> 
      </td> 
      <td class="delivery_option_logo"> 
       <img alt="Inpost/DPD" src="/img/s/206.jpg" class="order_carrier_logo"> 
      </td> 
      <td class="white_space_normal"> 
       <strong>Inpost/DPD</strong> 
       <br>&nbsp;- za pobraniem 
      </td> 
      <td class="delivery_option_price"> 
       <div class="delivery_option_price"> 
       27,00 zł (brutto) </div> 
      </td> 
      </tr> 
     </tbody> 
     </table> 
    </div> 
    </div> 
    <!-- end delivery_option --> 
</div> 

Antwort

2

Sie müssen .find() verwenden, um das span Element zum Ziel und dann Klasse hinzuzufügen.

$(this).find('span').addClass('checked'); 

Ich glaube, Sie brauchen

$('.delivery_option').click(function() { 
    var current = $('.active-radio-label'); 
    if (current.length){ 
     current.removeClass('active-radio-label') 
      .find('sapn') //Find span descendant 
      .removeClass('checked'); //remove class 
    } 

    $(this).addClass('active-radio-label').find('span').addClass('checked'); 
}); 
+1

Wenn die Spanne immer ein direkter Nachkomme ist, wäre. Children() besser als .find(). – MCMXCII

+2

@MCMXCII Wir sind uns nicht sicher, wo der Bereich im HTML ist, also ist die Verwendung der Find-Methode in Ordnung. –

2

Sie müssen nur

$(this).find('span').addClass('checked'); 
0

diesen Code versuchen, wird es funktionieren

 

    jQuery('.delivery_option').click(function() { 
     var current = jQuery('.active-radio-label'); 
     if (current.length) 
      current.removeClass('active-radio-label'); 
     jQuerythis).addClass('active-radio-label'); 

     jQuery(this).('.delivery_option span').addClass('checked'); 
    }); 

+0

Es scheint nicht zu funktionieren. – c64girl

0

ich dies unten machte es scheint zu funktionieren aber es macht keine Eingabe geklickt. Es ändert die Klasse. Vielleicht benutze ich .click(); am Eingang?

Verwandte Themen