2017-01-02 66 views
0

我有一个对象如何将变量(字符串)添加到现有对象?

this.ui.list 
this.ui.grid 

这些点到节点元素的DOM已经

目前,我有两个按钮,“网格”,“列表”。网格默认有一个活动的类,而List没有。我在这两个上都有一个click事件监听器,当你点击Grid时,它应该删除Active类,并将它添加到另一个兄弟List中。

ex。如果电网

let siblingElement = utils.js.func.siblings(el.target), // list node 
    siblingStyle = siblingElement[0].dataset.style, // outputs: list 
    currentElement = el.target, // grid node 
    currentStyle = el.target.dataset.style // outputs: grid 


classes.remove(siblingElement[0], 'active') 
classes.add(el.target, 'active') 

点击这工作得很好,现在我要做的就是淡入/淡出显示的列表/网格中的DOM元素。

因为当我点击网格,例如,我可以通过检查同级数据属性得到单词列表,我想动态地使用下面这些来避免复制/粘贴,并避免使用的if/else /开关

tl.to(this.ui.grid, 0.7, { autoAlpha: 0, display: 'none', ease: Expo.easeInOut }) 
tl.to(this.ui.list, 0.7, { autoAlpha: 1, display: 'block', ease: Expo.easeInout }) 

因为我可以得到当前的风格和兄弟风格....'list','grid',它将如何用变量I替换this.ui.grid,this.ui.list设置在上面?我希望这不是混淆,但基本上是这样的(我知道这是行不通的)

tl.to(this.ui.[siblingStyle], 0.7, { autoAlpha: 0, display: 'none', ease: Expo.easeInOut }) 
tl.to(this.ui.[currentStyle], 0.7, { autoAlpha: 1, display: 'block', ease: Expo.easeInout }) 

这甚至可能与JavaScript?

回答

0

所以,经过一番思考......我终于决定采用这种解决方案。如果有更好的东西,请让我知道。

var choices = { 
    "list" : this.ui.grid, 
    "grid" : this.ui.list 
} 

// Fade Effect 
tl.to(choices[currentStyle], 0.7, { autoAlpha: 0, display: 'none', ease: Expo.easeInOut }) 
tl.to(choices[siblingStyle], 0.7, { autoAlpha: 1, display: 'block', ease: Expo.easeInout }) 
相关问题