javascript - jquerymobile。双执行函数

标签 javascript jquery jquery-mobile

我有这样的代码:

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/

相关文章:

html - 如何使用 jQuery Mobile 构建一个 2 x 2 的按钮网格?

jquery - 异步加载 jQuery Mobile 脚本?

javascript - 关闭侧边栏然后处理表单提交

javascript - 如何检查 div 中的 span 是否包含特定文本?

javascript - 如果使用 Angular Js 不存在任何选项,则不要填充和隐藏下拉列表

php - 如何使用 Ajax 和 php 填充可靠的下拉列表

Jquery 选择 div 内的按钮

jquery - 如何使用 JQueryMobile 为 iphone/ipad 上传文件?

javascript - DataTables 日期搜索和重置输入

javascript - 将数字签名上传到文件夹并提交到数据库