我有这样的代码:
function getData(){
$.ajax({
url: 'http://pechati.ru/extdata/baseparts/filialsWSunsec.php',
contentType: "application/x-www-form-urlencoded;charset=utf8",
dataType: 'json',
success: function(jsonData){
//alert('Load was performed.');
console.debug('Data received.');
//jsonData = win2unicode(jsonData);
console.debug(jsonData);
$.each(jsonData,function (filial,dataFilial) {
//
//console.debug(filial);
var option = '<option value="'+filial+'" data-phone="'+ dataFilial.phone+ '" data-email="' + dataFilial.email + '"> ' + filial + '</option>';
//filial active
var activeFilial = 0;
if (parseInt(dataFilial.mainList)>0){
activeFilial++;
}
if (parseInt(dataFilial.contacts)>0){
activeFilial++;
}
if (parseInt(dataFilial.uslugi)>0){
activeFilial++;
}
if (activeFilial>0){
$('#filial-name').append(option);
}
});
},
error: function(error){
console.debug('We have a problem: ');
}
});
}
...
$(document).bind('pageinit', function() {
$('a.get-order').on('click', function () {
getData();
});
}
&#13;
点击 a.get-order 后,
getData正在执行两次。为什么会这样? 这是元素放在:
<div id="one">
...
</div>
<div id="two">
...
<a class="get-order">...</a>
</div>
&#13;
第一页已加载&#34;#one&#34;。从它称为页面&#34;#two&#34;。点击 a.get-order 后,我有双重执行getData()。如果我正在呼叫页面&#34;#three&#34;来自第&#34;#two&#34;并执行一些函数,执行三次。 为什么会发生这种情况以及如何解决它?
答案 0 :(得分:1)
您的代码:
$(document).bind('pageinit', function() {
$('a.get-order').on('click', function () {
getData();
});
}
每次初始化任何页面时都会运行。因此,在初始化#one时添加一次单击处理程序,然后在#two初始化时再次添加。将其更改为
$(document).on("pageinit","#two", function(){
$('a.get-order').on('click', function () {
getData();
});
});
这样点击处理程序只在初始化页面#two时添加一次。