我有这样的代码:
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();
});
}
点击a.get-order后,getData 执行了两次。为什么会出现这样的情况呢? 这是放置在的元素:
<div id="one">
...
</div>
<div id="two">
...
<a class="get-order">...</a>
</div>
第一页已加载“#one”。从它调用的页面“#two”。单击a.get-order后,我有双重执行getData()。如果我从页面“#two”调用页面“#三”并执行某个函数,它会执行三次。 为什么会发生这种情况以及如何解决它?
最佳答案
您的代码:
$(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 初始化时,单击处理程序仅添加一次。
关于javascript - jquerymobile。双执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39106610/