JavaScript事件点击两次触发

时间:2011-04-25 06:52:56

标签: javascript events click

我正在测试创建LI元素,每个元素中都有一个简单的超链接。 所有LI元素都是使用jQuery.append

动态生成的

然而 - 1.如果元素是作为CALLBACK函数(ASYNCHRONOUS)的一部分创建的 - 在调用jQuery AJAX之后 - 一切正常 2.如果元素是同步创建的 - 一旦点击它就会触发两个点击事件。

以下是三个相关的JavaScript函数?并且注意有两个硬编码的超链接1.标记为SYNC 2.标记为A-SYNC。

有什么想法吗?

    MCRM.Handler.accounts_index = function(){
    console.log("MCRM.Handler.accounts_index");
        MCRM.Account.all(function(r){
            MCRM.Handler.accounts_list(r);
            preventDefaultLink();
        });
    };



    MCRM.Handler.accounts_list = function(r){
          console.log("MCRM.Handler.accounts_list");
          $('#listAccount').append('<li class="arrow"><a href="app/views/accounts/show.html">A-SYNC</a></li>');
          for(var  i = 0; i < r.length; i ++) {
            record = r[i];
            $('#listAccount').append('<li class="arrow">' + MCRM.AccountsHelper.account_link(record) + '</li>');
          }
    };

    MCRM.Account.all = function(success_callback2, options){
            var accounts;
            console.log("MCRM.Account.all");
            $('#listAccount').append('<li class="arrow"><a href="app/views/accounts/show.html">SYNC</a></li>');
            var soap = "",
            url = MCRM.SIEBEL_URL + "/eai_enu/start.swe?SWEExtSource=WebService&SWEExtCmd=Execute&UserName=" + MCRM.SIEBEL_USER + "&Password=" + MCRM.SIEBEL_PWD
            soap = MCRM.XML_MY_ACCOUNTS;   
            jQuery.ajax({
                type: "post", url: url, contentType: "text/xml", data: soap, dataType: "xml", processData: false,
                success: function( doc, status){
                  console.log("SUCCESS");
                  var json = jQuery.xml2json(doc);
                  //var account = json.Body.SiebelAccountQueryByIdResponse.SiebelMessage.ListOfAccountInterface.Account;
                  MCRM.Account.accounts = json.Body.Siebel_spcAccount_SiebelAccountQueryByExample_Output.ListOfAccountInterface.Account;
                  success_callback2(MCRM.Account.accounts);
                  //MCRM.screen.account_detail.setValue(account.Name + "<br>" + account.MainPhoneNumber);
                },
              });

};

1 个答案:

答案 0 :(得分:0)

我发现我的问题是由于 preventDefaultLink();

包含“click”事件的事件侦听器的

被调用了两次。我只知道连接两次会影响双重事件。