Javascript事件侦听器失败,因为“undefined”不是函数

时间:2012-03-19 01:42:37

标签: javascript jquery addeventlistener

我已经和他一起工作了几个小时,这让我很生气。我点击链接时会弹出一个模态窗口。它有一个CSS转换,所以它渐渐消失。我需要回调一下转换完成的时间。所以我挖出了这个事件监听器:

$('#tagBox').addEventListener(
    'webkitTransitionEnd', 
    function(event) { 
        alert( "Finished transition!" ); }, 
    false );

我在Safari中,但该代码返回此错误:

TypeError: 'undefined' is not a function (evaluating '$('#tagBox').addEventListener( 'webkitTransitionEnd', function(){ alert( "Finished transition!" ) }, false )')

我的语法是否正确?我可以做alert($('#tagBox'))并返回[object],以便找到模态元素。为什么说undefined不是函数?

感谢。

4 个答案:

答案 0 :(得分:6)

$('#tagBox')返回一个jQuery元素,该元素没有addEventListener方法,这是一种本机方法。您需要在调用addEventListener之前获取原始DOM:

$('#tagBox')[0].addEventListener(// your code

答案 1 :(得分:2)

应该是:

$('#tagBox').bind('webkitTransitionEnd', function() {
   //....
});

如果您只想开一次,可以使用.one

$('#tagBox').one('webkitTransitionEnd', function() {
   //....
});

答案 2 :(得分:1)

您是否缺少事件参数?

box.addEventListener( 
'webkitTransitionEnd', 
function( event ) { 
     alert( "Finished transition!" ); 
}, false );

答案 3 :(得分:1)

如果您使用的是最新版本的jquery 1.7+,那么您实际上正在寻找“on” http://api.jquery.com/on/,可让您将事件添加到其中。

$('#tagBox').on('webkitTransitionEnd', function(event) { alert('whatever'); });

结合jQuery off

$('#tagBox').on('webkitTransitionEnd', function(event) { 
    $('#tagBox').off('webkitTransitionEnd');
    alert('whatever'); 
});