2010-12-02 3 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); 

Я динамически создаю элемент флажка. Мне нужно затем присвоить проверяемое свойство или нет. Но в приведенном ниже коде он всегда проверяется, потому что свойство присутствует.jQuery Флажок, динамически созданный с проверенным свойством

Помощь?

ответ

4

Не используйте здесь строку, используйте логическое значение:

$('<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 является булево свойство в DOM, поэтому строка любого не-0 длины является «truey», что означает, что "false" является действительно true. Вместо этого установите его непосредственно на true или false, без строк.

+0

Вы бьете меня к этому;) +1 – jwueller 2010-12-02 21:53:17

1

Вот еще один вариант

$('<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); 
Смежные вопросы