2016-08-31 2 views
3

Kann mir jemand bei diesem Problem helfen?Klicken Sie auf das Kontrollkästchen in div, das den Status des Kontrollkästchens ändert. jQuery

$('.check_group').click(function() { 
 
    var check = $(this).children('input')[0]; 
 
    check.checked = !check.checked; 
 
    alert(check.checked); 
 
    //run something else 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="check_group" style="background-color: rgb(200, 138, 59);"> 
 
    <input type="checkbox" /> 
 
</div>

Also, wenn ich auf das Kontrollkästchen klicken - den Zustand der Kontrollkästchen ändern, und dann ausgelöst, jQuery und Statusänderungen zurück.

Wie zu machen, dass, wenn Sie auf die div/Checkbox - Kontrollkästchen hat sich geändert hat und gibt es eine Warnung?

+0

Nizza Herausforderung !!! Bemerkte, dass in Firefox (auf 47 überprüft) es funktioniert, wie Sie erwartet, aber nicht auf Google Chrome, und ich bin nicht mutig genug, um auf IE zu überprüfen ... lol –

+0

Was genau funktioniert nicht? Temporäre Lösung (meine Antwort) arbeiten in IE und Google Chrome .. – Pavel

+0

@Pavel: Hast du meine Antwort versucht? –

Antwort

1

Versuchen Sie diesen Code, Sie müssen erkennen, wann der DIV geklickt wird, dann müssen Sie dieses Kontrollkästchen aktivieren/deaktivieren.

$('.check_group').click(function (e) { 
 
    var input = $(this).children('input[type="checkbox"]'); 
 
    //Identify the node which is clicked 
 
    if(e.target.nodeName == "DIV") 
 
    { 
 
     $(input).prop('checked', !$(input).prop("checked")); 
 
    } 
 
    console.log($(input).is(":checked")); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="check_group" style="background-color: rgb(200, 138, 59);"> 
 
    <input type="checkbox" /> 
 
</div>

0

Versuchen Sie dies zu tun?

$('.check_group').click(function() { 
 
    var checkbox = $(this).children('input')[0]; 
 
    setTimeout(function(){alert(checkbox.checked);},200); 
 
    //run something else 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="check_group" style="background-color: rgb(200, 138, 59);"> 
 
    <input type="checkbox" /> 
 
</div>

SetTimeout nicht erforderlich ist, es sei denn, Sie visuell zeigen zunächst überprüft und dann bei Alarm

+0

Ich muss den Checkbox-Status ändern, wenn ich in den Div. "check.checked =! check.checked;" - Es ist wichtig. Dein Code hat dasselbe Problem, funktioniert aber langsamer =) – Pavel

0

Vorübergehende Lösung:

$('.check_group').click(function (e) { 
 
    var check = $(this).children('input')[0]; 
 
    if (e.target.tagName == "INPUT") { 
 
     check.checked = !check.checked; 
 
    } 
 
    check.checked = !check.checked; 
 
    alert(check.checked); 
 
    // 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="check_group" style="background-color: rgb(200, 138, 59);"> 
 
    <input type="checkbox" /> 
 
</div>

Verwandte Themen