2016-07-25 15 views
-2

Ich habe Checkbox Code in HTML-Format unterCheckbox mit Ajax Problem für ausgewählte oder abzuwählen Ausgabe

<label class="checkbox-inline"> 
    <input type="checkbox" name="category[]" value="1" data-id="1" class="categorychk" checked="checked">Men      
</label> 
<label class="checkbox-inline"> 
    <input type="checkbox" name="category[]" value="2" data-id="2" class="categorychk" checked="checked">Women      
</label> 

auf Ajax-Erfolg Antwort, die ich folgenden jQuery-Code zu tun wird es funktionieren.

Aber Problem ist vor Anruf Ich lösche alle markierten Marken und dann oben genannten Code anwenden. Aber es funktioniert nicht.

$(".categorychk").each(function(){ 
    $(this).removeAttr("checked"); 
}); 

Hinweis

Wenn ich folgenden Code nach Ajax-Aufruf add: Wenn die oben genannten Code anwenden, ohne deutliche Spuren dann geprüft, ohne Probleme mit der vorherige geprüft Checkbox.

+0

downvoter bitte nach unten Abstimmung kommentieren. Wenn Sie meine Frage nicht verstehen, dann lassen Sie mich fragen. – Sadikhasan

+1

war ich nicht, wer downvoted ... aber ich bin auch nicht ganz klar. Welches Bit funktioniert nicht, die ".each" -Schleife oder der "clear all checked marks" -Code (den Sie nicht angezeigt haben)? – ADyson

+0

Verwenden Sie '.prop 'zum Manipulieren von _properties_. – undefined

Antwort

1

Ok. Sie versuchen, Dinge mit Attributen zu tun, wenn Sie Eigenschaften verwenden sollten. Lesen Sie http://api.jquery.com/attr/, speziell den Abschnitt mit dem Titel "Attribute vs Eigenschaften".

In der Zwischenzeit wird Ihr Code arbeiten, wenn Sie

$(".categorychk").each(function(){ 
$(this).removeAttr("checked"); 
}); 

zu

$(".categorychk").prop("checked", false); 

(NB Sie .each müssen nicht geändert werden() dies, wird es funktionieren auf alle ausgewählte Artikel automatisch).

und ändern

$(".categorychk[data-id="+value+"]").attr("checked",true); 

zu

$(".categorychk[data-id="+value+"]").prop("checked",true); 

Beachten Sie die Verwendung von .prop() anstelle von .attr()

+0

Danke @ADyson Ich benutzte' .prop' und löste mein Problem. – Sadikhasan

1

Wie in how do i check uncheck a checkbox input or radio button dokumentiert müssen Sie jQuery prop verwenden:

$(".categorychk[data-id="+value+"]").prop('checked', true); 

und Elemente zu filtern, indem Daten-ID, die Sie verwenden können:

$(".categorychk").filter(function() { 
     return $(this).data('id') == value; 
}); 
+0

Dieser Code funktioniert gut Aber wenn ich 'removeAttr' Code vor dieser Zeile setzen, dann funktioniert es nicht. – Sadikhasan

+0

Danke @gaetanoM Ich habe '.prop' und gelöst – Sadikhasan