2014-03-06 175 views
1

在鼠標懸停時遇到.hover()問題。似乎沒有工作。它適用於淡入淡出,但沒有淡出。我基本上在另一幅圖像上淡出。 '克隆'有一個較低的Z索引開始,我把它提出來,然後在懸停時淡入。兩張圖像都堆疊在一起第二個函數jQuery懸停問題(鼠標懸停)

小提琴:http://jsfiddle.net/C6AfM/

中的JavaScript:

$.fn.hoverImage = function() { 
    //add event handler for each image (otherwise it will add the same event handler for all images all at once) 
    this.each(function() { 
     var img = $(this); 
     var magnifyImage = img.next(); 

     //hover: first function is for mouseover, second is on mouseout 
     img.hover(function() { 
      magnifyImage.css("z-index", 2).animate({ 
       opacity:0.8   
      }, 200); 
     }, function() { 
      magnifyImage.css("z-index", -200).animate({ 
         opacity:0 
        }, 200); 
     }); 
    }); 
} 

的HTML:

<span class="img-span">         
    <img src="(url)" class="project-img">                  
    <img src="(url)" class="project-img-clone">                  
    <figcaption>Caption</figcaption> 
</span> 

的CSS:

.img-span { 
    width:27.08333333333333%; /* 260/960 */ 
    margin-right:3.009259259259259%; /* 26/864 */ 
    display:inline-block; 
    vertical-align: top; 
    position:relative; 
} 

.project-img { 
    max-width:100%; 
} 

.project-img-clone { 
    position:absolute; 
    top:0; 
    left:0; 
    max-width: 100%; 
    z-index:-200; 
    opacity:0; 
} 
+0

你可以請創建一個jsfiddle的問題? – Bobby5193

+0

當然,這是它:http://jsfiddle.net/C6AfM/ – Thomas

回答

2

問題是因爲克隆是呈現開放克鼠標離開沒有在原始圖像中燒,它是由克隆

$.fn.hoverImage = function() { 
    //add event handler for each image (otherwise it will add the same event handler for all images all at once) 
    this.each(function() { 
     var img = $(this); 
     var magnifyImage = img.next(); 
     console.log(magnifyImage); 

     //hover: first function is for mouseover, second is on mouseout 
     img.add(magnifyImage).hover(function() { 
      magnifyImage.css("z-index", 2).animate({ 
       opacity:0.8   
      }, 200); 
     }, function() { 
      magnifyImage.css('opacity', 0); 
     }); 
    }); 
} 

演示射擊:Fiddle


或者使用pointer-events - IE9 +

.project-img-clone { 
    position:absolute; 
    top:0; 
    left:0; 
    max-width: 100%; 
    z-index:-200; 
    opacity:0; 
    pointer-events: none; 
} 

演示:Fiddle

+0

謝謝阿倫!現在絕對有效。問題,所以當鼠標移出時,不是懸停()仍然附加到原始圖像?無法理解add()如何改變事件處理程序的動態。 – Thomas

+0

我認爲我正確地說'.add(magnifyImage)'意味着'.hover()'事件處理程序將被附加到* img'和'magnifyImage'。但是,由於z-index變化時一個圖像隱藏另一個圖像的方式,兩個函數中只有一個會爲每個圖像觸發。所以,'mouseover'函數只會在原始的'img'上觸發,'mouseout'函數只會在'magnifyImage'上觸發。 – theyetiman

+0

@Thomas - 嘗試將CS​​S中magnifyImage的大小改爲80%。這將防止'magnifyImage'隱藏'img'並允許觸發'mouseout'事件處理程序。你會看到發生了什麼。 – theyetiman