2016-04-26 17 views
1

Ich habe eine Liste von Kontrollkästchen in einem div einige überprüft werden. Ich möchte Hintergrundfarbe grün von Div ändern, wenn Kontrollkästchen aktiviert ist.Wie bekomme ich checkbox innen in div mit jquery?

Und auf nicht markierten Kontrollkästchen Hintergrundfarbe sollte grau sein.

HTML-Code:

<div class="row"> 
    <label> 
     <div class="col s3" style="padding:10px" id="div39"> 
      <div> 
       <input type="checkbox" name="chk39" value="39" checked=""> 
       <span>Featured Project</span> 
      </div> 
     </div> 
    </label> 
    <label> 
     <div class="col s3" style="padding:10px" id="div40"> 
      <div> 
       <input type="checkbox" name="chk40" value="40"> 
       <span>Specials/Discounts</span> 
      </div> 
     </div> 
    </label> 
</div> 

JQuery-Code:

var check = 1; 
    $('div').find('input[type=checkbox]').click(function(event) { 
     var val = $(this).val(); 
     if(check==1) 
     { 
      $('#div'+val).css({'background-color': 'lightgreen'}); 
      check=0; 
     }else{ 
      $('#div'+val).css({'background-color': 'lightgray'}); 
      check=1; 
     } 
    }); 

$(document).ready(function($) { 
     var selected = []; 
     $('input[type=checkbox] :checked').each(function() { 
      alert('asd'); 
      selected.push($(this).attr('value')); 
     }); 
}); 

Antwort

3
  • Verwenden .closest das nächste Element mit angegebenem Selektor zu finden.
  • Verwendung .change Zuhörers über check-box Elemente als click
  • Verwendung .change()change-handler zunächst aufzurufen.

Sehen Sie sich auch Number(this.checked), wird es 0 wenn this.checked ==> false oder anders sein.

$('div').find('input[type=checkbox]').change(function(event) { 
 
    var color = ['lightgreen', 'lightgray']; 
 
    var index = Number(this.checked); 
 
    $(this).closest('.s3').css({ 
 
    'background-color': color[index] 
 
    }); 
 
}).change(); 
 

 
$(document).ready(function($) { 
 
    var selected = []; 
 
    $('input[type=checkbox] :checked').each(function() { 
 
    selected.push($(this).attr('value')); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div class="row"> 
 
    <label> 
 
    <div class="col s3" style="padding:10px" id="div39"> 
 
     <div> 
 
     <input type="checkbox" name="chk39" value="39" checked=""> 
 
     <span>Featured Project</span> 
 
     </div> 
 
    </div> 
 
    </label> 
 
    <label> 
 
    <div class="col s3" style="padding:10px" id="div40"> 
 
     <div> 
 
     <input type="checkbox" name="chk40" value="40"> 
 
     <span>Specials/Discounts</span> 
 
     </div> 
 
    </div> 
 
    </label> 
 
</div>

+0

Danke Kumpel, es funktioniert wie ich will, aber ich will überprüft Attribut hinzufügen, wenn mit Farbe grün überprüft. Hintergrund Farbwechsel funktioniert gut, aber wie kann ich überprüft Attribut hinzufügen? –

+0

Auch dafür gibt es Antworten ... Warum willst du das? Sie müssen mit "Eigenschaften" als "Attribute" beschäftigen. – Rayon

+0

wenn Kontrollkästchen bereits aktiviert ist und wenn ich es abchecke, funktioniert es, aber wenn ich wieder überprüfe Farbe geändert, aber nicht überprüft. –

2

können Sie das übergeordnete div mit dem nächsten() -Methode finden.

$('div').find('input[type=checkbox]').click(function(event) { 
    var val = $(this).val(); 
    var parent = $(this).closest(".col"); 
    if(this.checked) { 
    parent.css({ 
     'background-color': 'lightgreen' 
    }); 
    } else { 
    parent.css({ 
     'background-color': 'lightgray' 
    }); 
    } 
}); 

Fiddle

0

Dies ist, wie ich es tun würde:

$("input[type='checkbox']").click(function() { 
    if ($(this).prop("checked") === true) { 
    $(this).closest(".col").css("background-color", "#36ac3b"); 
    } else { 
    $(this).closest(".col").css("background-color", "#999"); 
    } 
}); 

Here is the JSFiddle demo

0
$('div').find('input[type=checkbox]').click(function(event) { 
     if($(this).is(':checked')) 
     { 
    $(this).closest('div').css({'background-color': 'lightgreen'}); 
     } 
     else 
     { 
     $(this).closest('div').css({'background-color': 'lightgray'}); 
     } 
    }); 

$(document).ready(function($) { 
     var selected = []; 
     $('input[type=checkbox]').not(':checked').closest('div').css({'background-color': 'lightgray'}); 
     $('input[type=checkbox]:checked').closest('div').css({'background-color': 'lightgreen'}); 

}); 

Im Folgenden finden Sie die aktualisierte Geige

https://jsfiddle.net/cc3q2axr/