如果有下面一段html代码
<div id="wrap">
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
</ul>
</div>
就不用css美化了,希望可以点击其中li之一来调控div整体的样式,怎么做?
问题的核心就是要知道鼠标点击的哪个li, 我们可以给每一个<li>
都加一个id
, 再用js代码根据id
的种类来判断点击的是哪一个<li>
,就像下面
//HTML
<div id="wrap">
<ul>
<li id="na">a</li>
<li id="nb">b</li>
<li id="nc">c</li>
<li id="nd">d</li>
<li id="ne">e</li>
</ul>
</div>
//JAVASCRIPT
document.getElementById("na").onclick(function(){
.....
});
document.getElementById("nb").onclick(function(){
.....
});
.......
但这也太烦了吧,而且id
也太多了吧…………
好吧,来简单的方法了
事件委托
- 利用javascript的事件冒泡, 把事件的绑定移至它们的父级甚至祖父级元素上,这样只用绑定一次事件就够了!!!
//HTML
<div id="wrap">
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
</ul>
</div>
//JAVASCRIPT
var wrap = document.getElementById("wrap"),
DIV = wrap.getElementByTagName("li");
wrap.onclick = function (ev) {
var ev = ev || window.event,
target = ev.target || ev.srcElement;
// `||`后的两个是为了兼容ie,现在请默默诅咒IE一秒钟
for(var i = 0, l = DIV.length; i<l; i++){
if(DIV[i] === target){
......... //已选定点击的li,这里填写对应对应操作
}
}
}
OK!