将事件传递给外部js中的javascript函数

时间:2013-07-03 08:25:28

标签: javascript jquery ajax javascript-events

我有点击事件打开窗口弹出的功能。这些功能在外部js文件上。

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

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

一切都有罚款。但是当我重新启动这个功能时($('a.cart-window')。点击(打开);)响应ajax成功调用,在新生成的html上实现这个功能,它不会工作。 firebug显示错误(NS_ERROR_XPC_BAD_OP_ON_WN_PROTO:WrappedNative原型对象上的非法操作)。

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

ajax代码

function callAjax(){

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

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

});

}

2 个答案:

答案 0 :(得分: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;
    }   
});

答案 1 :(得分:0)

如果您正在处理动态元素,请使用.on()

使用事件委派(使用事件传播)
$(document).ready(function() {
    $(document).on('click', 'a.cart-window', open);

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

在这种情况下,无需为新更新的dom重新启动事件处理程序。