2013-07-03 83 views
0

我有点击事件打开窗口弹出的功能。这些函数在外部的js文件中。传递事件到外部js的javascript函数

$(document).ready(function() { 
    $('a.cart-window').click(open); 

    function open(){ 
     // function perform 
     var loginBox = $(this).attr('href'); 
     return false; 
    } 
}); 

一切工作罚款。但是当我重新启动这个函数($('a.cart-window')。click(open);)以响应ajax成功调用在新生成的html上实现这个函数时,它不会工作。萤火虫显示错误(NS_ERROR_XPC_BAD_OP_ON_WN_PROTO:WrappedNative原型对象上的非法操作)。

我只是想要做的是,我有很多冗长的JS函数,并给他们一个像开放的名字,因为我在上面的代码中显示并从任何地方调用它,所以我不需要编写完整的代码阿贾克斯成功的回应。重要笔记我在我的函数中使用$(this),并且还希望将事件传递给函数。 。

Ajax代码

功能callAjax(){

$.ajax({ 
    url: , 
    type: "POST", 
    data: 
}).done(function (msg) { 

$( 'a.cart窗口'),单击(开放);

}); 

}

+0

我看到你已经提出了9个问题,但没有标记任何答案,也没有对他们中的任何一个投过票。也许你可以让回答你问题的人知道它是否对你有帮助。谢谢。 – HMR

+0

谢谢。下次我会标记,之前我不知道,因为我不知道它是如何工作的。再次感谢您告诉我。 –

+0

没问题,谢谢你标记问题。 – HMR

回答

0

如果你与动感的元素,使用事件委派处理使用.on()

$(document).ready(function() { 
    $(document).on('click', 'a.cart-window', open); 

    function open(){ 
     // function perform 
     var loginBox = $(this).attr('href'); 
     return false; 
    } 
}); 

在这种情况下(使用事件传播)没有必要为新更新的dom重新启动事件处理程序。

+0

感谢它的工作。我总是困惑.on()方法应该使用的地方和时间。不管怎样,再次感谢。 –

0

试试这个,

(document).ready(function() { 
    $('a.cart-window').on('click',function(e){open(e)}); 
    function open (e){ 
     e.preventDefault(); 
     // function perform 
     var loginBox = $(e.currentTarget).attr('href');// you can use e.currentTarget here 
     return false; 
    } 
}); 
相关问题