我有以下基于原型的代码:
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()
是创建和格式化特殊按钮的基本功能,也可以正常工作。
干杯偷看
答案 0 :(得分:1)
首先再次检查此代码。现在它在循环的每次迭代中使用相同的元素(具有标识符“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 + '">');
}
将代码转换为
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的方法。