将一个动态创建的元素附加到另一个元素

时间:2014-02-15 17:33:31

标签: javascript jquery prototypejs

我有以下基于原型的代码:

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循环,它包含了这个for循环并且工作正常。

我的问题是,如何将其转换为jQuery?基本上我想做与此案例相反的事件here

在任何人建议动态创建新的按钮元素之前,createButton()createCheckbox()是创建和格式化特殊按钮的基本功能,也可以正常工作。

干杯偷看

3 个答案:

答案 0 :(得分:1)

  1. 首先再次检查此代码。现在它在循环的每次迭代中使用相同的元素(具有标识符“tr”)进行操作。这很奇怪。

  2. 查找方法createCheckbox()createButton(),它们可能看起来像

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

    并将它们转换为函数。转换后,他们应该接受数字(或者如果id[]是字符串数组可能是字符串)作为参数并返回带有创建的复选框/按钮的jQuery集合:

    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
    }
    

答案 1 :(得分: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);
}

答案 2 :(得分:0)

请尝试使用document.createElement('tr');。它应该与您使用JavaScript DOM操作的其余代码一起使用。如果您更愿意切换到jQuery DOM操作,请使用MamaWalter的方法。