您需要添加[0]
到您的 jquery 代码中以获取文档元素,但这对于添加事件侦听器的 jquery 方法毫无意义。我建议要么$('#but').mouseout(etc)
要么$('#but').on('mouseout', etc)
。
我已将您的 jsfiddle 更新为按预期工作,但我将尝试在这里简单介绍一下:
根据 jquery 文档,您应该熟悉两种添加事件侦听器的方法;.on()
方法,方法.(event)()
。后者可以添加到 jquery ojects 来代替object.(eventName)()
示例,将点击处理程序添加到对象: object.click(function() { console.log('executed'); });
但是,此方法不是“实时”的,如果动态添加元素,它不会自行更新,并且仅在文档准备好($(document).ready(function() { do stuff });
)时附加事件。为了将事件附加到动态添加的元素,我们需要该.on()
方法。
以下面的 html 为例:
<div class="wrapper">
<span class="dynamically_added">stuff</span>
</div>
为了将事件侦听器附加到动态添加的跨度,在您的 jquery 中,添加以下内容:
$(".wrapper").on('click', '.dynamically_added', function() {
console.log('executed');
});
.on()
is(are) 事件的第一个参数。您可以通过用空格分隔多个事件来附加多个事件:.on('click hover')
. 第二个参数要么是要执行的函数,要么是目标元素。在上面的例子中,它是跨度。最后一个参数当然是要执行的函数。据我所知,您需要有一个匿名函数来引用要执行的函数,而不是简单地写在那里。
我希望这有帮助。