我想在div子元素上制作一个动画,当我将一个不同div的子节点悬停时,这是我的代码:
$('.section li:nth-child(1)').hover(function(){
$('.section2 li:nth-child(1)').toggleClass('is-over');
});
$('.section li:nth-child(2)').hover(function(){
$('.section2 li:nth-child(2)').toggleClass('is-over');
});
$('.section li:nth-child(3)').hover(function(){
$('.section2 li:nth-child(3)').toggleClass('is-over');
});
$('.section li:nth-child(4)').hover(function(){
$('.section2 li:nth-child(4)').toggleClass('is-over');
});

那么我该如何优化呢?
答案 0 :(得分:1)
这是一个广泛的问题。
您可以创建这样的功能
function hoverChild(child){
$('.section li:nth-child('+child+')').hover(function(){
$('.section2 li:nth-child('+child+')').toggleClass('is-over');
});
}
并且要求将此函数称为
hoverChild(n) where n =1,2,3....
答案 1 :(得分:1)
您可以使用$(this).index()
获取hovered
项目
$('.section li').hover(function(){
var index = $(this).index()+1;
$('.section2 li:nth-child('+index+')').toggleClass('is-over');
});
.is-over {
color : red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="section">
<li>Step 1</li>
<li>Step 2</li>
</ul>
<ul class="section2">
<li>Step 11</li>
<li>Step 22</li>
</ul>
答案 2 :(得分:0)
$('.section li').hover(function(){
var num = $(this).index();
$('.section2 li:nth-child('+num+')').toggleClass('is-over');
});