pim*_*vdb 4 javascript performance jquery dom
我目前有一个真实的发电机草图.它工作正常,但速度很慢.我添加到<table>使用jQuery的每个布尔值组合.对于每个值,一个<td>元素由jQuery创建,然后添加到<table>.此外,我正在使用jQuery UI来获得漂亮的按钮而不是单选按钮.
在我发布的代码提取中,table是一个包含每个布尔组合的数组.也许我的代码有点难以理解,但它基本上归结为4个布尔变量(16种可能性),96个<td>元素是在添加了类和data属性集的情况下创建的.在第二部分中,创建三组三个单选按钮并将其转换为jQuery UI按钮组.
使用计时器我发现在所有东西都填满之前需要大约0.4秒.没有那么大的交易,但它肯定是显而易见的,并没有对用户产生积极的影响,因为每次他输入一个不同的布尔公式,它需要半秒钟加载.
$table = $('#table');
$.each(table, function(k, v) {
$tr = $('<tr>').addClass('res').data('number', k);
$.each(v[0], function(k2, v2) {
$td = $('<td>').text(v2).addClass(v2 ? 'green notresult' : 'red notresult');
for(var i = 0; i < 4; i++) {
$td.data(i, i === k2);
}
$tr.append($td);
});
$tr.append($('<td>').addClass('spacing'));
$table.append(
$tr.append(
$('<td>').text(v[1]).addClass(v[1] ? 'green result' : 'red result')
)
);
});
// ... here is some code that's not slowing down
$radiobuttonsdiv = $('#radiobuttonsdiv');
for(var i = 0; i < 4; i++) {
var $radiobase = $('<input>').attr('type', 'radio')
.attr('name', 'a'+i)
.click(handleChange);
// .label() is a custom function of mine which adds a label to a radio button
var $radioboth = $radiobase.clone().val('both').label();
var $radiotrue = $radiobase.clone().val('true').label();
var $radiofalse = $radiobase.clone().val('false').label();
var $td1 = $('<td>').addClass('varname').html(i);
var $td2 = $('<td>').attr('id', i);
$td2.append($radioboth, $radiotrue, $radiofalse).buttonset();
var $tr = $('<tr>').append($td1, $td2);
$radiobuttonsdiv.append($tr);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
| 归档时间: |
|
| 查看次数: |
1749 次 |
| 最近记录: |