简体   繁体   English

jQuery的悬停切换相关的选择器

[英]JQuery hover toggle related selector

I have a list of images and separate list where each item is related to an image. 我有一个图像列表和一个单独的列表,其中每个项目都与图像相关。 Is it possible to have a hover event that fades the related image in and out using JQuery? 是否有可能发生悬停事件,从而使用JQuery使相关图像淡入淡出? Ie when you hover over listid-1, image-1 fades in. 即,当您将鼠标悬停在listid-1上时,image-1会淡入。

This is the best I could do: 这是我能做的最好的事情:

 $(document).ready(function(){ $( ".options li" ).hover(function( event ) { $('.image-' + (this - ".listid")).toggleFade( "300" ); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div> <div class='images'> <img class='image-1' src='1.jpg'> <img class='image-2' src='2.jpg'> <img class='image-3' src='3.jpg'> <img class='image-4' src='4.jpg'> <img class='image-5' src='5.jpg'> </div> <div class="options"> <nav> <ul> <li class='listid-1'>One</li> <li class='listid-2'>Two</li> <li class='listid-3'>Three</li> <li class='listid-4'>Four</li> <li class='listid-5'>Five</li> </ul> </nav> </div> </div> 

You have a couple of issues. 您有几个问题。 Firstly concatenating the this reference with a string isn't going to give you a valid selector. 首先, this引用与字符串连接起来不会为您提供有效的选择器。 Secondly, the method name is fadeToggle() , not toggleFade() . 其次,方法名称是fadeToggle() ,而不是toggleFade()

To fix the problems you could first group the li and img elements by giving them all the same respective classes, then relate the hovered li to the img by their indexes, something like this: 要解决问题,您可以首先将liimg元素赋予各自相同的类,从而对liimg元素进行分组,然后通过其索引将悬停的liimg关联起来,如下所示:

 $(document).ready(function() { $(".options .listid").hover(function(event) { $('.image').eq($(this).index()).fadeToggle("300"); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div> <div class='images'> <img class='image' src='1.jpg'> <img class='image' src='2.jpg'> <img class='image' src='3.jpg'> <img class='image' src='4.jpg'> <img class='image' src='5.jpg'> </div> <div class="options"> <nav> <ul> <li class='listid'>One</li> <li class='listid'>Two</li> <li class='listid'>Three</li> <li class='listid'>Four</li> <li class='listid'>Five</li> </ul> </nav> </div> </div> 

You can get class of current li and split at - to get number and use it as selector for image. 您可以获取当前li类并在-拆分以获取数字并将其用作图像的选择器。

 $('img').hide() $(".options li").hover(function() { $('.image-' + ($(this).attr('class').split('-')[1])).fadeToggle("300"); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div> <div class='images'> <img class='image-1' src='1.jpg' alt="1"> <img class='image-2' src='2.jpg' alt="2"> <img class='image-3' src='3.jpg' alt="3"> <img class='image-4' src='4.jpg' alt="4"> <img class='image-5' src='5.jpg' alt="5"> </div> <div class="options"> <nav> <ul> <li class='listid-1'>One</li> <li class='listid-2'>Two</li> <li class='listid-3'>Three</li> <li class='listid-4'>Four</li> <li class='listid-5'>Five</li> </ul> </nav> </div> </div> 

If you have multiple classes on images instead you can use data attributes to select images. 如果图像上有多个类,则可以使用data属性选择图像。

 $('img').hide() $(".options li").hover(function() { $('img.image-' + $(this).data('img')).fadeToggle(300) }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div> <div class='images'> <img class='image-1' src='1.jpg' alt="1"> <img class='image-2' src='2.jpg' alt="2"> <img class='image-3' src='3.jpg' alt="3"> <img class='image-4' src='4.jpg' alt="4"> <img class='image-5' src='5.jpg' alt="5"> </div> <div class="options"> <nav> <ul> <li data-img="1" class='listid-1'>One</li> <li data-img="2" class='listid-2'>Two</li> <li data-img="3" class='listid-3'>Three</li> <li data-img="4" class='listid-4'>Four</li> <li data-img="5" class='listid-5'>Five</li> </ul> </nav> </div> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM