2014-02-15 2 views
-1

У меня есть следующий прототип на основе кода:Append один динамически созданный элемент в другой

for (j = 0; j < Math.floor(len/2); ++j) { 
    var tr = $('tr'); 
    var id1 = id[1] + (j * 2); 
    var id2 = id[1] + (j * 2 + 1); 
    // need to change the bits below here I believe 
    tr.appendChild(id1.createCheckbox()); 
    tr.appendChild(id1.createButton()); 
    tr.appendChild(id2.createCheckbox()); 
    tr.appendChild(id2.createButton()); 
    t[i].appendChild(tr); 
} 

Какой прототип на основе кода, добавляемых результат другой функции моего нового <tr> элемента. Индекс [i] поступает из цикла for, который конвертирует этот цикл и работает нормально.

Вопрос, как преобразовать это в jQuery? В принципе, я хочу сделать противоположное этому случаю here.

Прежде, чем кто-либо предложит просто динамически создать новый элемент кнопки, createButton() и createCheckbox() являются важными функциями для создания и форматирования специальных кнопок, а также работы отлично.

Приветствия выглядывает

+0

Вы должны быть более конкретными – Cilan

+0

Я конвертирую код из прототипа в jQuery и нашел этот сегмент. Я считаю, что tr.appendChild (id1.createCheckbox()); должен добавить новый checkBox, созданный с помощью функции createCheckbox(), затем этот продукт будет добавлен как дочерний элемент 'tr'. Он работает в прототипе, но не в jQuery, мне нужно его преобразовать, но не знаю, как это сделать. – sigmaSand

ответ

0

точно не знаю, что вы просите, может быть, это:

for (j = 0; j < Math.floor(len/2); ++j) { 
    var tr = $('<tr></tr>'); 
    var id1 = id[1] + (j * 2); 
    var id2 = id[1] + (j * 2 + 1); 
    // need to change the bits below here I believe 
    tr.append(id1.createCheckbox()); 
    tr.append(id1.createButton()); 
    tr.append(id2.createCheckbox()); 
    tr.append(id2.createButton()); 
    $(t[i]).append(tr); 
} 
+0

извините, не решил, я не думаю, что я объяснил это также, я должен был бы – sigmaSand

0

Попробуйте document.createElement('tr'); вместо этого. Он должен работать с остальной частью вашего кода, который использует JavaScript DOM-манипуляцию. Если вы предпочитаете переключиться на манипуляции с JQuery DOM, используйте подход MamaWalter.

+1

'$ ('tr')' в PrototypeJS возвращает элемент DOM с id = "tr" – Victor

+0

@Victor - спасибо за это ... Я не понимал, что прототип сделал это. Однако, основываясь на коде, я думаю, что OP пытается создать новый элемент. – ic3b3rg

+0

Создание нового элемента выглядит как 'new Element ('tr')' – Victor

1
  1. Прежде всего, проверьте этот код еще раз. Теперь он управляет одним и тем же элементом (с идентификатором «tr») в каждой итерации цикла. Это странно.

  2. методы находят createCheckbox() и createButton(), они могут выглядеть как

    Number.prototype.createCheckbox = function() { 
        return new Element('input', {type: 'checkbox', value: 'cb' + this}); 
    } 
    

    и преобразовывать их в функции. После преобразования они должны принять номер (или, может быть строка, если id[] является массив строк) в качестве аргумента и возвращать коллекцию JQuery с созданной CheckBox/кнопки:

    function createCheckbox(id) { 
        return $('<input type="checkbox" value="cb' + id + '">'); 
    } 
    
  3. Преобразование кода

    for (j = 0; j < Math.floor(len/2); ++j) { 
        var $tr = $('#tr'); // get element with id="tr" 
        var id1 = id[1] + (j * 2); 
        var id2 = id[1] + (j * 2 + 1); 
    
        $tr.append(createCheckbox(id1)); 
        $tr.append(createButton(id1)); 
        $tr.append(createCheckbox(id2)); 
        $tr.append(createButton(id2)); 
        $tr.appendTo(t[i]); // note that t[i] is element, not a jQuery collection 
    } 
    
Смежные вопросы