首页 新闻 会员 周边

提问一个问题,jq中如何获取节点的类型呢?

0
悬赏园豆:5 [已解决问题] 解决于 2019-04-04 14:57

今天面试遇到了一个问题如下:
以下代码如何实现点击列表显示相应的index值?

<ul id="test">        
    <p>1</p>        
    <p>2</p>        
    <p>3</p>    
</ul>

答案可以是这样的
let test=$('#test');
$('#test li').on('click',function(e){
alert( $(this).index());
})
但是这个怎么样去使用事件代理呢?
$('#test').on('click','li',function(e){
e.stopPropagation();
let target=e.target;
//console.log($(target).prop('outerHTML'))
// if(!target.nodeType===3){
alert( $(target).index());
// }
})
像这样的的话没办法判断li中的文字节点,如果点击文字节点index会等于0,想要实现点击文字节点也是li标签的话具体是如何做呢?

沧海的雨季的主页 沧海的雨季 | 初学一级 | 园豆:99
提问于:2019-04-03 22:45
< >
分享
最佳答案
0
$('#test').on('click', 'li', function(e) {
  alert($(this).index())
})
收获园豆:5
by.Genesis | 老鸟四级 |园豆:2719 | 2019-04-04 09:26

老哥,你这厉害了啊

沧海的雨季 | 园豆:99 (初学一级) | 2019-04-04 14:57
其他回答(1)
0

我写的是原生的JS,ul里面任何标签,标签里任何文字都可以点击出来

<body>
    <ul id="test">
        <p>文字也可以</p>
        <p>任何标签都可以吧</p>
        <div>3</div>
    </ul>
    <script type="text/javascript">
        var test = document.getElementById("test");
        var num = test.childElementCount;
        for (var i = 0; i < num; i++) {
            test.children[i].onclick = function() {
                console.log(this.innerText);
            }
        }
    </script>
</body>
刘下来 | 园豆:919 (小虾三级) | 2019-04-04 10:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册