这是两个不同ul里的li 我要点击时更改li 前面的其他节点
我怎么判断我点击下面这个li 更改下面li前面的子节点 。
现在点击下面的li 也是更改上面li的其他节点,换个name 就可以更改下面的。
但是换个name 下面li的CSS样式没了
看你的add函数内怎么实现的呢。
按理说传入的this,就是当前的标签。
function add(obj)
{
alert($(obj).html());
}
这种??
<ul>
<li onclick="test(this);">1</li>
<li onclick="test(this);">2</li>
<li onclick="test(this);">3</li>
<li onclick="test(this);">4</li>
<li onclick="test(this);">5</li>
</ul>
<ul>
<li onclick="test(this);">11</li>
<li onclick="test(this);">22</li>
<li onclick="test(this);">33</li>
<li onclick="test(this);">44</li>
<li onclick="test(this);">55</li>
</ul>
<script type="text/javascript">
function test(e){
var index=$(e).index();
var html=$(e).parents("ul").find("li").eq(index).html();
$(e).parents("ul").find("li").eq(index).css("font-size","32px");
console.log(html);
}
</script>
原生js有个事件对象,使用.target就能获取到点击的标签元素了,如下
function f1(ev){
ev = ev || window.event;
console.log(ev.target);
}
通常这种情况的点击事件是通过事件委托方式进行的,通过父级的click事件委托到子级,如我生成一个list,每个item的点击事项:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.actived {
color: red;
}
li {
cursor: pointer
}
</style>
</head>
<body>
<ul id="ul">
</ul>
<script>
let ul = document.getElementById('ul');
let dom = '';
for(let i = 1; i < 11; i++) {
dom+= '<li>' + '标题' + i + '</li>'
}
ul.innerHTML = dom
ul.addEventListener('click', handleClick, false)
function handleClick(e) {
let current = e.target
if(current.tagName.toLowerCase() == 'li') {
let lis = ul.getElementsByTagName('li')
for(let i = 0; i < lis.length; i++) {
lis[i].className = ''
}
current.className = 'actived'
}
return false
}
</script>
</body>
</html>