Javascript 函数为每次交互运行额外的时间

Javascript 函数为每次交互运行额外的时间,javascript,jquery,jquery-mobile,select,Javascript,Jquery,Jquery Mobile,Select,我使用以下代码创建一个选择菜单 $('#homecomments').live('pagebeforeshow', function() { getTitlesComments(); }); function getTitlesComments() { notesdb.transaction(function(t) { t.executeSql('SELECT buildingcode, buildingaddress FROM buildings ORDER

我使用以下代码创建一个选择菜单

$('#homecomments').live('pagebeforeshow', function() {
    getTitlesComments();
});

function getTitlesComments() {
    notesdb.transaction(function(t) {
        t.executeSql('SELECT buildingcode, buildingaddress FROM buildings ORDER BY buildingaddress ASC', [], function(t, result) {
            t.executeSql('SELECT DISTINCT buildingcode FROM bill', [], function(t, resultflat) {
                var j,
                    lenflat = resultflat.rows.length,
                    rowflat;
                var i,
                    len = result.rows.length,
                    row;
                //alert(len); 
                if (len > 0 ) {

                    for (i = 0; i < len; i += 1) {
                        row = result.rows.item(i);
                        for (j = 0; j < lenflat; j += 1) {
                            rowflat = resultflat.rows.item(j);
                            if (rowflat.buildingcode == row.buildingcode){
                                 $('#opt1').append('<option value="' + row.buildingcode + '">' + row.buildingaddress + '........' + row.buildingcode + '</option>');
                            }
                        }
                     }
                     $("#opt1").selectmenu('refresh');
                     $("#opt1").change(function() {
                         alert($( "#opt1 option:selected" ).text());
            });
        }


    })
})
但问题并没有得到解决


我哪里错了

您正在每个页面显示上附加更改事件。相反,请在第页上附加一次创建:

$(document).on("pagecreate", "#homecomments", function(){

    $(document).on("change", "#opt1", function() {
        alert($( "#opt1 option:selected" ).text());
    });

});


$(document).on('pagebeforeshow','#homecomments', function() {
    getTitlesComments();
});

JavaScript在页面加载中不是持久的。这里肯定发生了其他事情。另外,我们需要更多的代码来重现这种错误。另外:从jQuery 1.7开始,该方法已被弃用。用于附加事件处理程序。jQuery旧版本的用户应该优先使用.live()。@kosbou可能与缓存有关。您在哪里/如何测试此脚本?清除缓存会改变输出?我在手机上测试它。我使用jquery 1.6.4,请您帮助我。我必须在哪里添加此代码?我必须替换哪一行?@kosbou,使用delegate()而不是on()
$('select"#opt1 option').removeAttr('selected');
$(document).on("pagecreate", "#homecomments", function(){

    $(document).on("change", "#opt1", function() {
        alert($( "#opt1 option:selected" ).text());
    });

});


$(document).on('pagebeforeshow','#homecomments', function() {
    getTitlesComments();
});