搜尋

首頁  >  問答  >  主體

javascript - JS事件委託問題

<!DOCTYPE html>
<html lang="zh">
<head>

<meta charset="UTF-8">
<title>Title</title>
<style type="text/css">
    li{
        list-style: none;
        cursor: pointer;
    }
</style>
<script type="text/javascript">
    window.onload = function(){
        var Ul = document.getElementById("ul");
        var Li = Ul.getElementsByTagName("li");
        Ul.onclick = function(ev){
            var ev = ev || window.event;
            var target = ev.target || ev.srcElement;
            if(target.nodeName.toLowerCase() == "li"){
                var index = 0;
                for(var i=0;i<Li.length;i++){
                    if(Li[i]===target){
                        index=i;
                    };
                }
                if(index>=0){
                    alert('索引是'+index);
                }
            }

        }

    }

</script>

</head>
<body>

##<ul id="ul">

<li>首页</li>
<li>新闻</li>
<li>娱乐</li>

</ul>


</body>

</html>

我想問一下,這種用事件委託的方式取得索引的方式,有沒有更簡單的方法呢? ###
大家讲道理大家讲道理2733 天前575

全部回覆(1)我來回復

  • 習慣沉默

    習慣沉默2017-06-08 11:05:05

    children轉換為Array,然後直接呼叫indexOf。 (沒考慮相容性…)

    <ul id="ul">
      <li>1</li>
      <li>2</li>
      <li>3</li>
    </ul>
    const ul = document.querySelector('#ul')
    const children = Array.prototype.slice.call(ul.children)
    ul.onclick = (ev) => {
      const target = ev.target;
        console.log('current index', children.indexOf(target))
    }

    這裡有個例子

    回覆
    0
  • 取消回覆