【发布时间】:2014-05-16 08:36:31
【问题描述】:
所以,我正在编辑一个结构,其中涉及一个名为 bulk 的 Javascript Object。
我有它的功能(有一些错误),但我觉得我做了太多DOM 操作。问题是我的jQuery 的值硬编码。
我不会在这里发布所有代码,只发布我关心的内容:
(如果有兴趣,请查看此小提琴中的完整代码 - http://jsfiddle.net/G689t)
让我列出基本参数,这样就有意义了:
- 您有一个
capacity或10。 - 当您选择
checkboxes时,它会从逻辑上确定哪些checkbox是负担得起的,并禁用那些不是负担得起的。 - 如果
checkbox未选中,它还需要删除disabled状态。 -
speed计数器根据 1-4 的层级将我们的总数capacity更改为-/+1。 -
speed和capacity需要为 UI 体验进行交流。
我已经写了一个 function 来完成这个,但我只是觉得我的代码对 DOM 的操作太多了。
有人可以根据我描述的值将这个过程统一成一个单一的function 以检查/更新DOM吗?
- PC = 电源容量(容量)
- 速度 = 人物速度(速度)
这是我尝试过的一些代码(JS):
数据结构:
var bulk = {
speed: 1,
damage: 0,
type: 'P',
statEf: [],
health: 0,
minion: [0],
pc: 10,
exp: 9000
};
尝试的函数
// CORE UPDATE FUNCTION FOR VALUES / DISABLE / ENABLE
$(':checkbox, input[type="button"]').on('click', function() {
if(bulk.pc <= 1){
$('#addSpeed').attr('disabled', 'disabled');
$('#remSpeed').removeAttr('disabled');
} else if(bulk.speed > 2){
$('#remSpeed').removeAttr('disabled');
}
if(bulk.pc <= 1 && bulk.pc !== 4){
$('#remSpeed').removeAttr('disabled');
$('#addSpeed').removeAttr('disabled');
}
});
我应该继续运行这个并测试每个value,然后将它扔到我以后的functions,还是有更简单的方法来完成这个?
目标是编写一个函数来测试一些事情:
- 如果
bulk.pc无法提供checkbox['data-pc'],请禁用它只要它不是checked。 - 如果
bulk.speed为1,请禁用remSpeed按钮 - 如果
bulk.speed为4,请禁用addSpeed按钮
(所有这些都可以工作,只需要知道如何将它们组合成一个函数)
我在想switch case 和困难的parameters,但我希望有更好的选择。
(如果有兴趣,请在此小提琴中查看完整代码 - http://jsfiddle.net/G689t)
PS:我希望有人可以看看 fiddle 并轻松将其合并为一个函数
值/禁用/启用。
【问题讨论】:
标签: javascript jquery html object