Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将多个不同元素悬停在列表中,显示单个图像_Jquery_Image_Onmouseover - Fatal编程技术网

Jquery 将多个不同元素悬停在列表中,显示单个图像

Jquery 将多个不同元素悬停在列表中,显示单个图像,jquery,image,onmouseover,Jquery,Image,Onmouseover,我尝试完成一个元素列表,在该列表上悬停一个不同的图像 像这样的 <ul id="test"> <li id="sidebarList_1">Image 1</li> <li id="sidebarList_2">Image 2</li> <li id="sidebarList_3">Image 3</li> <ul> <div id="imgDiv_1"> <img

我尝试完成一个元素列表,在该列表上悬停一个不同的图像

像这样的

<ul id="test">
 <li id="sidebarList_1">Image 1</li>
 <li id="sidebarList_2">Image 2</li>
 <li id="sidebarList_3">Image 3</li>
<ul>


<div id="imgDiv_1">
    <img src="http://www.freemacware.com/wp-content/images/smultron1.png" />
</div>
<div id="imgDiv_2">
    <img src="http://www.freemacware.com/wp-content/images/smultron2.png" />
</div>
<div id="imgDiv_3">
    <img src="http://www.freemacware.com/wp-content/images/smultron3.png" />
</div>
$(this).mouseover(function() {
    $("#imgDiv_1").css('visibility','visible'); 
}),

$(this).mouseout(function() { 
    $("#imgDiv_1").css('visibility','hidden'); 
});
$('div').click(function(){
    $(this) //<--- refers to the div that was clicked
});
正如所见,它是静态的,因为它是现在。我尝试了类似这样的方法来获取li中id元素的编号(例如侧边栏列表1):

​但这不管用。我怎样才能完成我想做的事情呢?

试试用这个

$("#test li").mouseover(function() {   
    var myString = $(this).attr("id").replace("sidebarList_","");   
    $("#imgDiv_" + myString).css('visibility','visible'); 
});

$("#test li").mouseout(function() { 
    var myString = $(this).attr("id").replace("sidebarList_","");  
    $("#imgDiv_" + myString).css('visibility','hidden'); 
});
试试这个

$("#test li").mouseover(function() {   
    var myString = $(this).attr("id").replace("sidebarList_","");   
    $("#imgDiv_" + myString).css('visibility','visible'); 
});

$("#test li").mouseout(function() { 
    var myString = $(this).attr("id").replace("sidebarList_","");  
    $("#imgDiv_" + myString).css('visibility','hidden'); 
});

我将向
li
元素添加一个
data-*
属性,其值对应于相关的
div

<ul id="test">
 <li id="sidebarList_1" data-img="imgDiv_1">Image 1</li>
 <li id="sidebarList_2" data-img="imgDiv_2">Image 2</li>
 <li id="sidebarList_3" data-img="imgDiv_3">Image 3</li>
<ul>
这是一个例子

这使用了
on
方法,将选择器作为第二个参数,以利用事件删除(每个
li
元素只有一个事件处理程序,而不是一个)。它假定默认情况下
div
元素是隐藏的,因此在鼠标悬停时,
toggle
调用将使悬停的
div
可见

有用的参考资料


我将向您的
li
元素添加一个
data-*
属性,其值对应于相关的
div

<ul id="test">
 <li id="sidebarList_1" data-img="imgDiv_1">Image 1</li>
 <li id="sidebarList_2" data-img="imgDiv_2">Image 2</li>
 <li id="sidebarList_3" data-img="imgDiv_3">Image 3</li>
<ul>
这是一个例子

这使用了
on
方法,将选择器作为第二个参数,以利用事件删除(每个
li
元素只有一个事件处理程序,而不是一个)。它假定默认情况下
div
元素是隐藏的,因此在鼠标悬停时,
toggle
调用将使悬停的
div
可见

有用的参考资料


    • 您应该学习如何使用
      $(this)
      this
      。从你使用它的方式来看,它实际上没有什么意义。当您想使用
      时,这将是这样的

      <ul id="test">
       <li id="sidebarList_1">Image 1</li>
       <li id="sidebarList_2">Image 2</li>
       <li id="sidebarList_3">Image 3</li>
      <ul>
      
      
      <div id="imgDiv_1">
          <img src="http://www.freemacware.com/wp-content/images/smultron1.png" />
      </div>
      <div id="imgDiv_2">
          <img src="http://www.freemacware.com/wp-content/images/smultron2.png" />
      </div>
      <div id="imgDiv_3">
          <img src="http://www.freemacware.com/wp-content/images/smultron3.png" />
      </div>
      
      $(this).mouseover(function() {
          $("#imgDiv_1").css('visibility','visible'); 
      }),
      
      $(this).mouseout(function() { 
          $("#imgDiv_1").css('visibility','hidden'); 
      });
      
      $('div').click(function(){
          $(this) //<--- refers to the div that was clicked
      });
      
      $('div')。单击(函数(){
      
      $(this)/你应该学习如何使用
      $(this)
      this
      。你使用它的方式实际上并不涉及任何内容。当你想使用
      this
      时,应该是这样的

      <ul id="test">
       <li id="sidebarList_1">Image 1</li>
       <li id="sidebarList_2">Image 2</li>
       <li id="sidebarList_3">Image 3</li>
      <ul>
      
      
      <div id="imgDiv_1">
          <img src="http://www.freemacware.com/wp-content/images/smultron1.png" />
      </div>
      <div id="imgDiv_2">
          <img src="http://www.freemacware.com/wp-content/images/smultron2.png" />
      </div>
      <div id="imgDiv_3">
          <img src="http://www.freemacware.com/wp-content/images/smultron3.png" />
      </div>
      
      $(this).mouseover(function() {
          $("#imgDiv_1").css('visibility','visible'); 
      }),
      
      $(this).mouseout(function() { 
          $("#imgDiv_1").css('visibility','hidden'); 
      });
      
      $('div').click(function(){
          $(this) //<--- refers to the div that was clicked
      });
      
      $('div')。单击(函数(){
      
      $(this)//通过设置鼠标悬停项链接,使其在语义上更好,键盘更易访问,并且更方便您自己:

      <ul id="test">
       <li id="sidebarList_1"><a href="#imgDiv_1">Image 1</a></li>
       <li id="sidebarList_2"><a href="#imgDiv_2">Image 2</a></li>
       <li id="sidebarList_3"><a href="#imgDiv_3">Image 3</a></li>
      <ul>
      

      这意味着您不需要处理字符串操作,如果用户在浏览器上关闭了JS,则相关项仍然是语义链接的。

      通过使悬停项链接在语义上更好,键盘更容易访问,并使自己更轻松:

      <ul id="test">
       <li id="sidebarList_1"><a href="#imgDiv_1">Image 1</a></li>
       <li id="sidebarList_2"><a href="#imgDiv_2">Image 2</a></li>
       <li id="sidebarList_3"><a href="#imgDiv_3">Image 3</a></li>
      <ul>
      

      这意味着你不需要处理字符串操作,如果用户关闭了浏览器上的JS,相关项目仍然是语义链接的。

      在所有这些示例中,这是什么?在所有这些示例中,这是什么?这是一个多么简洁、好的解决方案!谢谢,非常有魅力。描述得非常符合逻辑!这是一个多么简洁漂亮的解决方案!谢谢,非常有魅力。非常符合逻辑!