2010-12-02 8 views
2
$('<input>', { 
    type: "checkbox", 
    id: "checkbox" + value.AttributeName, 
    name: "checkbox" + value.AttributeName, 
    className: required + " " + dataType, 
    attributeId: value.AttributeId, 
    disabled: readOnly, 
    checked: (value.AttributeValue != "0") ? "true" : "false" 
}).appendTo(li); 

Je crée dynamiquement un élément de case à cocher. Je dois alors lui assigner la propriété checked ou non. Mais dans le code ci-dessous, il est toujours vérifié car la propriété est présente.jQuery Case à cocher créée dynamiquement avec la propriété cochée

Aide?

Répondre

4

Ne pas utiliser une chaîne ici, utilisez un booléen:

$('<input>', { 
    type: "checkbox", 
    id: "checkbox" + value.AttributeName, 
    name: "checkbox" + value.AttributeName, 
    className: required + " " + dataType, 
    attributeId: value.AttributeId, 
    disabled: readOnly, 
    checked: (value.AttributeValue != "0") 
}).appendTo(li); 

checked est une propriété booléenne dans les DOM, donc une chaîne de longueur non-0 est « truey », ce qui signifie que "false" est vraiment true. Au lieu de définir directement à true ou false, sans chaînes.

+0

Vous me devança;) +1 – jwueller

+1

Ce serait 'vérifié: value.AttributeValue = "0"', sans ternaire!. :) – Tomalak

+0

@Tomalak - +1 - arbres/forêt et autres :) –

1

est ici une autre option

$('<input>', { 
    type: "checkbox", 
    id: "checkbox" + value.AttributeName, 
    name: "checkbox" + value.AttributeName, 
    className: required + " " + dataType, 
    attributeId: value.AttributeId, 
    disabled: readOnly, 
}).attr('checked',value.AttributeValue!="0") 
    .appendTo(li);