2011-05-13 64 views
0

我錯過了正在處理的頁腳元素的最後1%。jQuery事件邏輯/操作順序

我想要做的邏輯應該是顯而易見的:我想讓EXPAND這個詞顯示,當我將鼠標懸停在頁腳上時,我希望顯示頁腳展開時單詞HIDE。

當頁腳展開時,除了HIDE部分之外,我已經可以工作了 - 當我將鼠標懸停在頁腳塊上時,它會再次顯示EXPAND字樣。我想停止發生懸停事件。或者至少我認爲這就是我想要做的。

=>JSFiddle會告訴你我在說什麼。

感謝幫助,

特里

$(document).ready(function() { 
    $("#shows").click(function() { 
     $('footer').toggleClass("highlight"); 
     $('#shows').text('Hide'); 
    }); 
    $("footer").hover(
     function() { 
     $('#shows').text('+Expand'); 
     }, 
     function() { 
     $('#shows').text('Shows'); 
     } 
    );  
}); 

回答

1

我想你想要做的是改變基於頁腳是否有類「亮點」 #shows的懸停文本。我改變了你的懸停處理程序:

$("footer").hover(
    function() { 
     $('#shows').text($('footer').hasClass("highlight") ? "Hide" : "+Expand"); 
    }, 
    function() { 
     $('#shows').text('Shows'); 
    } 
); 

Modified Fiddle

+0

甜!非常正確。 $('#shows')。text($('footer')。hasClass(「highlight」)?「Hide」:「+ Expand」);'某種簡短的if語句? IE瀏覽器:如果頁腳有類別突出顯示,請使用「隱藏」,否則使用「擴展」。像那樣的東西? – saltcod 2011-05-13 16:20:08

+1

正確。這被稱爲三元運算符。你可以在這裏閱讀它http://www.gsdesign.ro/blog/how-to-use-ternary-operator-in-javascript/ – InvisibleBacon 2011-05-13 16:23:56

+0

哇。這非常有幫助。 ol的三元操作符。真棒。非常感謝。 – saltcod 2011-05-13 16:27:07

1

你在找什麼是戰略打電話unbind。這工作在你的小提琴:

function setNotExpanded(elem) { 
    $(elem).unbind('mouseenter mouseleave').hover(
     function() { 
     $('#shows').text('+Expand'); 
     }, 
     function() { 
     $('#shows').text('Shows'); 
     } 
    ); 
} 

function setExpanded(elem) { 
    $(elem).unbind('mouseenter mouseleave'); 
} 

$(document).ready(function() { 

    $("#shows").click(function() { 
     if ($('footer').hasClass('highlight')) { 
     $('#shows').text('Shows'); 
     setNotExpanded('footer'); 
     } else {     
      $('#shows').text('Hide'); 
      setExpanded('footer'); 
     } 
     $('footer').toggleClass("highlight"); 
    });    

    setNotExpanded('footer'); 

}); 
+0

非常感謝。我原本以爲'.unbind()'可能是我一直在尋找的東西。 – saltcod 2011-05-13 16:27:49