2013-09-04 14 views
9

Ich habe ein Array so etwas wieprüfen mehrere Kontrollkästchen mit Jquery

var values = ['1','3','4','5']; 

ich die Liste der Kontrollkästchen haben

<div id='list'> 
    <input type='checkbox' value='1' /> 
    <input type='checkbox' value='2' /> 
    <input type='checkbox' value='3' /> 
    <input type='checkbox' value='4' /> 
    <input type='checkbox' value='5' /> 
    <input type='checkbox' value='6' /> 
    <input type='checkbox' value='7' /> 
    <input type='checkbox' value='8' /> 
    <input type='checkbox' value='9' /> 
    <input type='checkbox' value='10' /> 
</div> 

jetzt will ich Checkboxen, deren Werte zur Auswahl liegt innerhalb des Arrays Werte. Ich habe dies getan

es funktioniert gut, aber kann ich es ohne for loop tun.

Vielen Dank im Voraus an die Helfer.

+0

Was für Schleife mit der falsch ? – Archer

+1

Sie sollten 'prop' anstelle von' attr' für boolesche Werte verwenden. http://api.jquery.com/prop/ –

Antwort

16

ersetzen Versuchen

$("#list").find('[value=' + values.join('], [value=') + ']').prop("checked", true); 

Demo: Fiddle

+0

Ich denke, ich würde uns eher eine Schleife wegen der Lesbarkeit aber +1 für die Op, was er verlangt. – andrew

+0

ist nicht das ist identisch mit @Blazemongers, nur mit einem zusätzlichen Fund? – mplungjan

2

könnten Sie filter wie unten verwenden, aber es ist die gleiche wie for Schleife obwohl ..

$('#list :checkbox').filter(function() { 
    return $.inArray(this.value, values) >= 0; 
}).prop('checked', true); 
+0

es verwendet immer noch eine Iteration –

+0

@ArunPJohny Ja, habe ich erwähnt, dass .. aber es ist ein besserer Ansatz als mit einem 'for.loop' –

+0

Warum ist es ein besserer Ansatz als eine for-Schleife oder jeder? Es ist viel schwerer zu lesen – mplungjan

8

Sie könnten mit einem einzigen kombinierten Selektor dies noch kurz und bündig tun:

$('#list [value="'+values.join('"],[value="')+'"]').prop('checked',true); 

Welche produziert ein Selektor wie:

$('#list [value="1"],[value="3"],[value="4"],[value="5"]') 

http://jsfiddle.net/mblase75/jgqm4/

1

Sie können Ihre for-Schleife mit $ .each

JQuery

$.each(values, function() { 
    $("#list [value=" + this + "]").attr("checked", "checked"); 
}); 
+0

hat nicht für mich gearbeitet '$ .Each (Werte, Funktion() { $ (" # list ['Wert = "' + this + '"]'). Attr (" checked "," checked "); });' ist die richtige Kombination – anton

Verwandte Themen