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

Javascript 将一个动态创建的元素附加到另一个元素,javascript,jquery,prototypejs,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.a

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

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);
}
for(j=0;j
这是基于原型的代码,用于将另一个函数的结果附加到我的新
元素中。索引
[i]
来自一个for循环,它封装了这个for循环,并且工作正常

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

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


干杯偷窥

不确定你到底想要什么,可能是这样:

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);
}
for(j=0;j
尝试
document.createElement('tr')取而代之。它应该与使用JavaScript DOM操作的其余代码一起工作。如果您希望切换到jQueryDOM操作,请使用MamaWalter的方法

  • 首先,再次检查此代码。现在,它在循环的每个迭代中使用相同的元素(标识符为“tr”)进行操作。真奇怪

  • 查找方法
    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 + '">');
    }
    
    函数createCheckbox(id){
    返回美元(“”);
    }
    
  • 将代码转换为

    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
    }
    
    for(j=0;j

  • 您必须更具体一点,我正在将一些代码从prototype转换为jQuery,并找到了这个片段。我相信tr.appendChild(id1.createCheckbox());如果要附加一个使用createCheckbox()函数创建的新复选框,则此产品将作为“tr”的子元素附加。它在prototype中工作,但在jQuery中不工作,我需要转换它,但不确定如何转换。抱歉,没有解决,我认为我没有解释它,我应该在prototype中使用
    $('tr')
    ,JS返回id=“tr”@Victor的DOM元素-谢谢。。。我不知道prototypeJS会这么做。不过,基于代码,我认为OP正在尝试创建新元素。新元素创建看起来像
    newelement('tr')