2013-01-02 93 views
0

嗨我正在使用mouseoutmouseleave方法,但两者都不起作用。我试图修复它,但无法找到解决方案。我的代码看起来很好,它没有错误,所以我想知道它为什么不工作。下面是示例代码linkMouseout和mouseleave不起作用

$(".chzn-select").chosen() 
$(function(){ 
    $('a').click(function(){ 
     $('.mydiv').addClass('redbrd') 
    }) 

    $('.redbrd').live('mouseover', function(){ 
     var htm= '<div id="mmt">some text</div>' 
     $('body').append(htm) 
    }) 
    $('.redbrd').live('mouseout', function(){ 
     $('#mmt').remove() 
    }) 
}) 
+0

您使用相同的ID创建多个div。也许班是你正在寻找的不是id。 –

+4

此外,不要在每行之后使用分号。 – Scrimothy

+0

在您的原始文章中,您尝试在元素上注册事件,并在加载页面时使用html中没有元素的类。 – Zack

回答

0

而不是使用实况事件结合的功能,我使用jQuery的方法mouseovermouseout。在这个例子中,我在包含div的地方设置了一个span,它显示您的鼠标何时进入div,并在离开div时隐藏。

如果您愿意,您可以将span更改为您想要使用的任何元素,并使用CSS对其进行样式/定位。

这是一个可行的解决方案,为您的问题?

http://jsfiddle.net/Dpp8a/4/

+0

他使用现场。所以这里没有问题。 –

+0

@dystroy没有元素具有他尝试在页面加载时绑定事件的类。他通过点击链接添加课程。 – Zack

+0

@ZackT。这不是一个大问题,但如果你认为我已经删除点击事件和现有类呼叫事件,请检查更新后的代码http://jsfiddle.net/Dpp8a/2/ – jchand

2

的问题是,该事件不被抓住,因为他们是不完全正确的冒泡。

活依赖于适当的事件冒泡。我想选择的插件打破了起泡

试试这个:

$(".chzn-select").chosen() 
$(function(){ 
    $('a').click(function(){ 
     $('.mydiv').addClass('redbrd') 

     $('.redbrd').live('mouseover',function(){ 
      if($('#mmt').length == 0){ 
       var htm= '<div id="mmt">some text</div>'; 
       $('body').append(htm);   
      }  

     }); 
     $('.redbrd').live('mouseout',function(){ 
      $('#mmt').remove(); 
     });   


    })   
}) 

随着加入CSS:

.mydiv{padding:10px;} 

这使得您将鼠标悬停在足够大,你是不是马上进入DIV并退出它。要在您当前的示例中看到此效果,请慢慢接近红色边框的右下角,直到您将“div”输入到select和div之间的小空格中。然后搬出去。你会看到它按预期工作。

I added the changes I mentioned to a fiddle.你可以看到它在那里工作。

2

看你的提琴网页,可能有一些问题,由于来自这部分代码一旁的并发症被检测到的鼠标事件,但是使用应该得到您大多数的方式出现:

$(function() { 
    $(".chzn-select").chosen(); 

    $('a').click(function() { 
     $('.mydiv').removeClass().addClass('redbrd mydiv');// NOTE this is in case your other question comes into play with this one. 
    }); 
    $('body').on('mouseenter', '.redbrd', function() { 
     $('body').append('<div class="mmt">some text</div>'); 
    }); 
    $('body').on('mouseleave', '.redbrd', function() { 
     $('.mmt').remove(); 
    }); 
}); 

编辑:审查后,您添加李在您选择的东西后的页面。

这应该与工作:

$(".chzn-select").chosen(); 
$(function() { 
    $('a').click(function() { 
     $('.mydiv').addClass('redbrd'); 

     $('.redbrd').on('mouseover', 'li', function(e) { 
      var $target = $(e.target); 
      if ($('#mmt').length === 0) { 
       var htm = '<div id="mmt">' + $target.text() + ' some text</div>'; 
       $('body').append(htm); 
      } 
     }); 
     $('.redbrd').on('mouseout', function() { 
      $('#mmt').remove(); 
     }); 
    }); 
}); 

更新您在这里提琴:http://jsfiddle.net/JtQHY/1/这样你就可以对其进行测试。

+0

它不工作,是否有任何其他方法显示弹出式菜单,而不是mouseenter和nouseout – jchand

+0

仍然没有给予欲望reuslt,谢谢你的努力 – jchand

+0

我想我们需要更多的细节在这里然后:确切版本的浏览器,你究竟看到了什么是无效的/不是所期望的。而且,在功能上也许是一个更有限的例子(如果可能的话)。 –

相关问题