从ul块访问标记名称li

时间:2016-09-04 12:00:09

标签: javascript

我想点击" aaa"或" bbb" 。如何在没有班级的情况下访问li元素"点击"来自ul的id = parent?对于我使用的其他元素:

var elements = document.getElementById('parent');
var classElem = document.getElementsByClassName('click'); 

我想到了这样的事情:liW = elements - classElem但这并不起作用。

这是我使用的HTML:

<html> 
<head>
</head>
<body> <ul id = "parent"> 
<li> aaa </li>
<li> bbb </li>
<li class ="click"> ccc </li>
<li class ="click"> ddd </li> 
</ul> 
<ul> <li> eee </li>
</ul>
</body>

3 个答案:

答案 0 :(得分:2)

您可以使用Array.filter,如下所示:

var liW = [].filter.call(
    document.getElementById('parent').children, // the LI elements
    function(li) {return !li.classList.contains('click');}
);

这将为您提供一个节点数组,这些节点对应 <{1}}的{​​{1}}标记。

答案 1 :(得分:1)

您可以循环浏览所有子li元素,检查每个元素是否具有类click,如果没有,则单击时显示警告。

var elements = document.getElementById('parent').getElementsByTagName('li');
function elementClicked(elem) {
    alert('test');
}
for(var i = 0; i < elements.length; i++) {
    if(!elements[i].classList.contains('click')) {
        elementClicked(elements[i]);
    }
}

答案 2 :(得分:1)

您可以将事件侦听器放在父元素上 - UL - 并检查目标元素是否具有该类。

示例 -

list = document.getElementById('parent');

list.addEventListener('click',function(e){
    if (e.target.className.indexOf('click') === -1) alert(test);
});