JavaScript 事件点击触发了两次
Posted
技术标签:
【中文标题】JavaScript 事件点击触发了两次【英文标题】:JavaScript event click triggered twice 【发布时间】:2011-04-25 06:52:55 【问题描述】:我正在测试创建 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】:我发现我的问题是由于 防止默认链接();
包含“click”事件的事件侦听器被调用了两次。我只知道附加它两次会影响双重事件。
【讨论】:
以上是关于JavaScript 事件点击触发了两次的主要内容,如果未能解决你的问题,请参考以下文章