jquery toggle + binding和unbinding hover

时间:2011-05-02 17:51:06

标签: jquery click hover toggle bind

嘿伙计们。使用

 .toggle() 

时遇到一些问题

截至目前,我可以成功地将鼠标悬停在div上并显示一个单独的div,然后将鼠标悬停并隐藏起来。点击也有效,它可以正确解除悬停的绑定。

我遇到麻烦的地方是'unlick'隐藏div并重新启用悬停。

以下是代码:

$('#song1').hover(
    function() { $('#song1_selected').fadeIn(); },
    function() { $('#song1_selected').fadeOut(); }   
  );

$('#song1').click(function() {
    $('#song1_selected').show();
    $("#song1").unbind('mouseenter mouseleave');
  });

任何帮助都会得到帮助!!

谢谢,亚光

2 个答案:

答案 0 :(得分:0)

如果您正在动态创建元素,.click()并且所有普通处理程序都无效。

您需要使用.live()绑定事件:

$('#song1').live('click', function() {
  ...

答案 1 :(得分:0)

如果只想在每次点击时设置一个标志并在想要淡入/淡出时检查它,而不是绑定/取消绑定?

$('#song1').hover(
    function() {
        if ( ! $(this).data('activesong') ) {
           $('#song1_selected').stop().fadeIn();
        }
    },
    function() {
       if ( ! $(this).data('activesong') ) {
           $('#song1_selected').stop().fadeOut();
       }
    }    
);

$('#song1').click(
    function() {
        var isActive = !$(this).data('activesong');
       $('#song1_selected').toggle(isActive);
       $("#song1").data('activesong', isActive);
   }
);

示例http://jsfiddle.net/gaby/qTprn/