При динамическом создании HTML-элементов с помощью jQuery, как включить значения в JSON условно? - PullRequest
0 голосов
/ 05 февраля 2012

Я создаю флажок для каждого элемента в файле XML.Текст каждого файла - "TRUE" или "FALSE", и я хочу создать флажок для каждого "TRUE" и флажок, не отмеченный для каждого "FALSE".Прямо сейчас мой код дублируется внутри if и else, потому что я не могу придумать способ условно включить проверенный параметр в этот JSON.Кто-нибудь знает более сухой способ сделать то же самое?

d = $(this)
if (d.text() === 'TRUE') {
    $('<input>', {
    className: 'checkbox',
    type: 'checkbox',
    id: d.attr('id'),
    name: d.attr('name'),
    checked: 'checked'
    }).appendTo(td);
}
else {
    $('<input>', {
    className: 'checkbox',
    type: 'checkbox',
    id: d.attr('id'),
    name: d.attr('name')
    }).appendTo(td);
}

Ответы [ 2 ]

1 голос
/ 05 февраля 2012

Вы также можете сделать это следующим образом:

var d = $(this);
var options = {
        className: 'checkbox',
        type: 'checkbox',
        id: d.attr('id'),
        name: d.attr('name')
    };
options.checked = d.text() === 'TRUE' ? 'checked' : '';
/* --or if you think this is more readable
 *if (d.text() === 'TRUE') {
 *  options.checked = 'checked';
 *}
*/
$('<input>', options).appendTo(td);

Не существует "правила", согласно которому карты атрибутов нельзя строить заранее.:)

0 голосов
/ 05 февраля 2012
var d = $(this),
    $input = $('<input>', {
        className: 'checkbox',
        type: 'checkbox',
        id: d.attr('id'),
        name: d.attr('name')
    }).appendTo(td);

if(d.text() === 'TRUE') $input.prop('checked', true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...