2016-10-25 1 views
0

Ich habe vier Spalten von Radio-Listen. Ich möchte Hintergrundfarbe und Rahmen des ausgewählten Elements ändern. Ich habe einige Antworten auf meine Stackoverflow Code wieWenn Radio Button überprüft ändern Eltern Hintergrundfarbe

  1. If radio button checked change parent div (li) background - javascript
  2. Changing background color with CSS on radio button input when :checked

angewendet Aber als meine Struktur mit vier Spalten seine nicht richtig funktioniert. Manchmal, wenn ich eine Sprache aus der ersten Spalte auswähle, erhält die letzte Option der anderen Spalte die Hintergrundfarbe. Manchmal werden mehrere Optionsfelder ausgewählt.

Ich bekomme nicht, wie ich jquery/javascript anwenden sollte, um Farbe meines vorgewählten li Einzelteils in jeder anderen Weise zu ändern. Kann mir bitte jemand dabei helfen? Andere Lösungen als ich versucht haben, werden geschätzt. Vielen Dank.

HTML-Code:

<div class="added"> 
      <div class="column-left"> 
      <ul class="options-list"> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
      <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" data-toggle="radio"> 
     English 
      </label> 
     </li> 
     <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
     <label class="radio" > 
      <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2" data-toggle="radio"> 
     German 
      </label> 
      </li> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
     <label class="radio" > 
      <input type="radio" name="optionsRadios" id="optionsRadios3" value="option3" data-toggle="radio"> 
     Japanese 
      </label> 
      </li> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
     <label class="radio" > 
      <input type="radio" name="optionsRadios" id="optionsRadios4" value="option4" data-toggle="radio"> 
     Russian 
      </label> 
      </li> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
     <label class="radio" > 
      <input type="radio" name="optionsRadios" id="optionsRadios5" value="option5" data-toggle="radio"> 
     Other 
      </label> 
      </li> 
      </ul> 
      </div> 
      <div class="column-center"> 
       <ul class="options-list"> 
       <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
       <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios6" value="option6" data-toggle="radio"> 
     Arabic 
      </label> 
      </li> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
       <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios7" value="option7" data-toggle="radio"> 
     Hebrew 
      </label> 
      </li> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
       <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios8" value="option8" data-toggle="radio"> 
     Korean 
      </label> 
      </li> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
       <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios9" value="option9" data-toggle="radio"> 
     Spanish 
      </label> 
      </li> 
      </ul> 

      </div> 
      <div class="column-center-right"> 
       <ul class="options-list"> 
       <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
       <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios10" value="option10" data-toggle="radio"> 
     Chinese 
      </label> 
      </li> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
       <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios11" value="option11" data-toggle="radio"> 
     Hindi 
      </label> 
      </li> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
       <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios12" value="option12" data-toggle="radio"> 
     Polish 
      </label> 
      </li> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
       <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios13" value="option13" data-toggle="radio"> 
     Taiwanese 
      </label> 
      </li> 

    </ul> 
      </div> 
      <div class="column-right"> 
       <ul class="options-list"> 
       <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
       <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios14" value="option14" data-toggle="radio"> 
     French 
      </label> 
      </li> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
       <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios15" value="option15" data-toggle="radio"> 
     Italian 
      </label> 
      </li> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
       <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios16" value="option16" data-toggle="radio"> 
     Portuguese 
      </label> 
      </li> 
      <li class="ng-scope" ng-repeat="way in group.paymentWays" ng-switch="" on="way.type"> 
       <label class="radio"> 
      <input type="radio" name="optionsRadios" id="optionsRadios17" value="option17" data-toggle="radio"> 
     Vietnamese 
      </label> 
      </li> 

      </ul> 
      </div> 

      </div> 

CSS-Code:

ul.options-list { 
      margin: 0; 
      display: block; 
     list-style: none; 
     font-family: Arial; 
      padding-left: 110px; 
     text-align: left; 
     width: 215px; 
    } 
    ul.options-list li { 
     position: relative; 
     padding: 17px 17px; 
     background-color: #F6F6F6; 
     color: #2a4753; 
     /* cursor: pointer;*/ 
     max-height: 150px; 
     overflow: hidden; 
     border: 1px solid #DDDDDD; 
     border-radius: 8px; 
     margin-bottom: 16px; 
     margin-top: 15px; 
    } 
div.added { 
    padding: 0px 0px 5px 0px; 
    font-size: 22px; 
    font-family: Arial; 
    color: #2a4753; 
    text-align: left; 
} 
.column-left{ float: left; width: 22%; text-align: center;} 
.column-right{ float: left; width:22%;text-align: center; } 
.column-center{ float: left; width: 22%; text-align: center;} 
.column-center-right{ float: left; width: 22%; text-align: center;} 

JS und CSS-Code, die ich versucht hatte:

function updateHighlightRadio() { 
     var selected = this.parentNode.parentNode.parentNode.getElementsByClassName("selected")[0]; 
     if (selected) selected.className = selected.className.replace(" selected", ""); 
     this.parentNode.parentNode.className += " selected"; 
    } 

    window.onload = function() { 
     var radios = document.querySelectorAll("input[type=radio]"); 
     for (var i = 0; i < radios.length; ++i) { 
     radios[i].onchange = updateHighlightRadio; 
     } 
    } 

.options-list .selected { 
     background-color: #E8F2F4; 
} 

Im obigen Code hatte ich versucht, indem ich den Namen der Klasse ul aller meiner 4 Spalten änderte und versuchte, indem ich den gleichen Namen von Radiobuttons für jede Spalte gruppierte/gab und dementsprechend den Code js änderte, aber es funktionierte nicht richtig.

$(document).ready(function() { 
    $("ul.options-list li").on("click",function() { 
     $('ul.options-list li').removeClass('sel_bk_color'); 
     $(this).addClass('sel_bk_color'); 
    }); 
}); 

.sel_bk_color{ 
     background-color: #E8F2F4; 
} 

Der obige Code funktioniert auch nicht.

+0

Hier

$(document).ready(function() { $("ul.options-list li").on("click",function() { if($(this).find('input[type="radio"]').is(':checked')) { $('ul.options-list li').removeClass('sel_bk_color'); $(this).addClass('sel_bk_color'); } }); }); 

Wiedergabe Try at-dest Ihre js Code Können Sie bitte, dass Sie versucht? – mlbd

+0

@mlbd hinzugefügt versucht Code. Bitte überprüfen Sie die Frage. – anonymous

+1

Sorry, Aber zuerst sagten Sie "wie ich jquery/javascript anwenden sollte, um die Farbe meines ausgewählten li-Elements zu ändern." aber soweit ich sehen kann, ist es in Ordnung. Hier ist dein Code mit fiddle https://jsfiddle.net/tr9Lyxz3/ und wolltest du auch die Eltern-'ul'-Klasse ändern? – mlbd

Antwort

1
+0

irgendwie auf meiner Seite, die Radio-Button überprüft Ereignis funktioniert nicht. – anonymous

+0

Ich hatte versucht, indem ich "else" gab. Auf meiner Seite wird der Eintrag in "else" Teil und auch Hintergrundfarbe angewendet, auch wenn der Radio Button nicht angekreuzt ist, nur mit einem 'li' Klick. – anonymous

+0

es funktioniert seltsam auf meiner Seite :( – anonymous

Verwandte Themen