开发者

jQuery Event logic/order of operations

开发者 https://www.devze.com 2023-03-06 05:34 出处:网络
I\'m missing a final 1% of a foote开发者_开发技巧r element I\'m working on. The logic of what I want to do should be obvious:I want to have the word EXPAND showing when I hover over the footer, and

I'm missing a final 1% of a foote开发者_开发技巧r element I'm working on.

The logic of what I want to do should be obvious: I want to have the word EXPAND showing when I hover over the footer, and I want the word HIDE showing when the footer is expanded.

I have everything working except the HIDE part when the footer is expanded—when I hover away from the footer block, it shows the word EXPAND again. I want to stop that hover event from occurring. Or at least I think that's what I want to do.

=>JSFiddle will show you what I'm talking about.

Appreciate the help,

Terry

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


I think what you want to do is change the hover text of #shows based on whether or not footer has the class "highlight". I changed your hover handler to:

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

Modified Fiddle


What you're looking for is strategically calling unbind. This works in your fiddle:

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号