2014-09-20 59 views
0

我正在構建專輯的封面。當鼠標懸停在任何圖像上時,封面將開始循環顯示所有圖像,否則會停止循環,並會重複該過程。我有以下功能(從jQuery文檔修改)完成大部分工作。jquery檢查「this」對象是否被徘徊,不使用.is(':hover')函數

但是我被困在noHover()函數中,它應該檢查this.is(':hover')的返回值以查看當前圖像是否被徘徊。然而,這個功能只適用於我的Firefox,並不適用於其他瀏覽器。然後我用$('#images:hover')。length。但是這會檢查div是否被徘徊,而不是正在檢查的當前圖像。這是否可以通過任何方式檢查「this」對象是否徘徊,以便div中的白色區域被徘徊時,它不會循環圖像。

的jsfiddle演示http://jsfiddle.net/91q54zj6/

$(function(){ 

    $('.noncover').hide(); // hide all the non-cover pictures 

    function noHover() { 
     // check div is hovered or not 
     return $('#images:hover').length ? this : this.wait('mouseenter'); 
    } 

    $('.cover').mouseenter(function() { 


     $('#images > img').repeat().each($).fadeIn(50,$).wait(100).wait(noHover).fadeOut(50,$); 

    }); 
+1

什麼是'。等待()'? – Barmar 2014-09-20 22:00:04

+0

等待(noHover)?如果它被徘徊,則返回它,所以不要等待,如果沒有徘徊,然後等待,直到鼠標再次結束。 – sealife 2014-09-20 22:04:18

+0

你能舉一些例子來看看這個封面專輯幻燈片的工作原理嗎? – andrex 2014-09-20 22:11:44

回答

0

嘗試使用find()和IMG:懸停:

return $('#images').find('img:hover').length ? this : this.wait('mouseenter'); 

我更新了你的提琴:

http://jsfiddle.net/91q54zj6/1/

+0

謝謝瑞安,解決了這個問題。順便說一句,只是好奇,看到很多人說.is(':hover')只能用於jQuery 1.9.1及以上版本。但是,這對我來說不是同一個問題?我使用1.8.3,它只適用於Chrome,這是正常的嗎?謝謝! – sealife 2014-09-20 22:08:58

+0

我試過在IE,Chrome和Safari中更新的小提琴;它在所有這些工作。現在所有主流瀏覽器都支持:hover CSS選擇器,因此您不應該遇到問題。您的原始代碼是檢查鼠標是否懸停在整個div上,而不是div內的單個圖像。 find()函數將搜索當前對象的直接子對象並應用可選過濾器。在這裏,要搜索正在懸停的圖像,您可以使用過濾器「img:hover」。希望有所幫助。 – Ryan 2014-09-20 22:23:41

+0

感謝您的回覆瑞恩。我發現is(':hover')函數也適用於JSfiddles中的所有瀏覽器。但是如果我從localhost中雙擊我的html文件就停止工作,在這種情況下它只能在Firefox中工作。你知道有什麼區別嗎? – sealife 2014-09-20 22:46:20