1

我遇到了问题

$('.myElement').on('hover',function({...});

在尝试了.on('hover',之后.hover(),两者都不起作用,我尝试了.live('hover',).live('hover',)工作.. 但是,我使用的是 jQuery 1.8.3,这是为什么呢?这是我正在使用的代码:

jQuery

$('.myElement > a').live('hover',function(event) {
    //do stuff
}

HTML

<div class="myElement">
    <a href="#" />
</div>

有时我想知道我只是在犯愚蠢的错误还是语言只是疯了..

4

4 回答 4

2

on()live()在您将第二个参数中的委托选择器传递给它时才起作用。在您的情况下,主要选择器将是您的.myElement元素被附加到的容器元素,委托将是.myElement,如下所示:

$('.parentOfMyElement').on('hover', '.myElement', function() {
    // do stuff...
});
于 2013-01-16T13:17:40.023 回答
0

至于所有其他方法(除了 .live() ...这是它已被弃用的原因之一) .on() 仅适用于已经存在的元素。如果您还想将事件处理程序绑定到尚不存在的元素,则需要使用来自更高级别元素的委托。

例如,'.myElement' 是 '.myContainer' 的子元素,那么你可以这样做

$('.myContainer').on('hover', '.myElement', function(e) {
    ...
});
于 2013-01-16T13:18:04.813 回答
0

尝试这个。

$('body').on('hover', '.myElement', function...);

正文可以引用您需要监视事件的任何上下文或容器。

于 2013-01-16T13:18:16.740 回答
0

尝试这个

$('.myElement > a').hover(function(event) {
//do stuff
  alert('hover');
});

一个看到这个例子

问候。

于 2013-01-16T13:22:51.510 回答