我构建了这个非常简单的脚本,但我没有工作。
谁能告诉我窃听器在哪里吗?
<div id="hello" style="border: 1px solid #000000; margin:10px; padding:5px;">Hello</div>
<div style="border: 1px solid #000000; margin:10px; padding:5px;">Word</div>
<div style="margin:10px; padding:5px;">Test</div>JS
$(function()
{
$('div').live('hover', function (event)
{
if (event.type == 'mouseover')
{
$(this).addClass('mark');
}
else
{
$(this).removeClass('mark');
}
});
});http://www.jsfiddle.net/4pYth/4/
提前感谢!
彼得
发布于 2010-09-21 17:23:27
我想你想用两个单独的现场活动来做这件事。
$('div').live('mouseenter', function() {
$(this).addClass('mark');
}).live('mouseleave', function() {
$(this).removeClass('mark');
)};编辑:
下面是mouseenter和mouseover之间区别的链接,以防您好奇:What is the difference between the mouseover and mouseenter events?
发布于 2010-09-21 17:36:54
hover不是一个事件。
jQuery对象上的许多与事件相关的快捷方法都是实际事件:click、submit等,但hover不是,它是一个单独的快捷方法,注册了mouseenter和mouseleave事件。
live()只能接受事件,所以如果您想使用类似悬停的代码,您将需要单独的事件,如凯尔的例子所示。
但是,这会有点慢,因为现在jQuery必须监视每一个鼠标的移动,以查看它是否发生在div元素上。使用hover()绑定当前页面中的div上的mouseenter/leave事件可能会更快,而不需要live-ness。但是,如果有动态添加的div元素,则意味着在将它们添加到文档时必须重新绑定。
更好的是:只需使用CSS悬停。只有IE6,好的旧:hover失败了;如果您真的需要为浏览器的用户提供良好的悬停效果(吧!他们不配,无赖!)然后您可以只为该浏览器添加回退脚本,例如:
<style type="text/css">
div:hover, div.hover { background: red; }
</style>
<!--[if lt IE 7]><body class="browser-ie6"><![endif]-->
<!--[if gte IE 7]><!--><body><!--<![endif]-->
<script type="text/javascript">
if ($(document.body).hasClass('browser-ie6')) {
$('div').live('mouseenter', function() {
$(this).addClass('hover');
}).live('mouseleave', function() {
$(this).removeClass('hover');
)};
}
</script>https://stackoverflow.com/questions/3762761
复制相似问题