jquerymobile。双执行功能

时间:2016-08-23 16:41:27

标签: 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();   
        
    });
}
&#13;
&#13;
&#13;

点击 a.get-order 后,

getData正在执行两次。为什么会这样? 这是元素放在:

&#13;
&#13;
<div id="one">
...
</div>
<div id="two">
...
<a class="get-order">...</a>
</div>
&#13;
&#13;
&#13;

第一页已加载&#34;#one&#34;。从它称为页面&#34;#two&#34;。点击 a.get-order 后,我有双重执行getData()。如果我正在呼叫页面&#34;#three&#34;来自第&#34;#two&#34;并执行一些函数,执行三次。 为什么会发生这种情况以及如何解决它?

1 个答案:

答案 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时添加一次。