为什么以下jQuery函数会触发两次?

时间:2011-06-04 00:01:02

标签: jquery

我的(文档).ready函数中包含以下内容:

replace_fav_url();

和jQuery函数:

function replace_fav_url(){
    $j('a.fav').click(function(e) {
        $j.post($j(this).attr('href'));
        e.preventDefault();
    });
}

除了函数似乎被调用两次之外,一切都运行良好吗? 1单击两个函数调用?不确定这里发生了什么?

编辑:

完整的application.js文件:

var $j = jQuery.noConflict();

//Append javascritp header requests
$j.ajaxSetup({ 
  'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
});


$j(document).ready(function() {

    $j(document).ajaxSend(function(event, request, settings) {
    if (settings.type == 'GET') return;
    if (typeof(AUTH_TOKEN) == "undefined") return;
    settings.data = settings.data || "";
    settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN);
  });


    replace_vote_urls();
    replace_fav_url();
});


function replace_vote_urls(){
    $j('a.vote').click(function(e) {
        $j.post($j(this).attr('href'));
        e.preventDefault();
    });

} 


function replace_fav_url(){
    $j('a.fav').click(function(e) {
        $j.post($j(this).attr('href'));
        e.preventDefault();
    });
}

1 个答案:

答案 0 :(得分:3)

我只是猜测这是问题所在,但是如果您多次调用replace_fav_url()函数,它会将额外的点击事件绑定到a.fav。每次打电话都会继续这样做。

如果您以任何方式更改a.fav元素的数量,最好使用delegate()live()绑定点击事件。