你可以换一个共同的父里面所有的元素,那么你申请你click
事件处理到父,检查发起事件的target
。
这样做您需要将事件仅附加到单个元素(而不是每个单个元素)。
而且,你的风格应该在CSS作为一类被声明,所以你只需要切换特定类(它总是更好地从JavaScript保持关闭的CSS,为mantainability)
这里是一个简单的例子http://codepen.io/anon/pen/jPwXVr
CSS
.open {
width: 800px;
-webkit-transition : all 1s;
-moz-transition : all 1s;
transition : all 1s;
background: red;
}
JS
document.getElementById('wrap').addEventListener('click', function(ev) {
var target = ev.target
if (target.nodeName === 'DIV') {
target.className = 'open';
}
}, false);
如果您的标记的结构使得impossibile使用共同的包装,你可以在body
元素上附着的情况下,像这样
http://codepen.io/anon/pen/aOwPWY?editors=011
CSS
.element {
width: 800px;
-webkit-transition : all 1s;
-moz-transition : all 1s;
transition : all 1s;
}
.element.open {
background: red;
}
JS
document.body.addEventListener('click', function(ev) {
var t = ev.target;
/* I used classList for the sake of brevity, check caniuse.com
for its support across browser */
if (t.classList.contains('element')) {
t.classList.toggle('open');
}
}, false);
不错。谢谢! ':D' –
这很酷,但我需要它周围的页面很多,所以它可以包裹在ID –
你可以附加事件也在身体 - 我会准备另一个例子 – fcalderan