1

複数の成功イベント内で成功関数を実行する際に問題が発生しました。コードを示します。

$("#beneficiarios").one("pagebeforeshow", function(){

    db.transaction( function(tx){ queryDBAll(tx, "Beneficiarios", 0, 10) }, onError ); //LOAD BENEFICIARIOS IN DB

    $("#btn-add-ben").click(function(){
        var nombres = $('#b_nombres').val();
        var apellidos = $('#b_apellidos').val();
        var dia = $('#b_dia').val();
        var mes = $('#b_mes').val();
        var año = $('#b_año').val();
        var fecha_nac = año+"-"+mes+"-"+dia;

        //ADD BENEFICIARIO TO DB
        db.transaction( function(tx){
            tx.executeSql("INSERT INTO Beneficiarios (nombres, apellidos, fecha_nac) VALUES ('"+nombres+"','"+apellidos+"','"+fecha_nac+"')",
            [],
            function(tx, results){
                var benid = results.insertId;
                $('#emptyBeneficiarios').remove();
                $('#ul-beneficiarios').append(
            '<li><a href="#" id="view_ben_'+benid+'">'+nombres+' '+apellidos+'</a><a href="#" id="del_ben_'+benid+'" data-position-to="window" data-icon="delete" class="itemDelete">Eliminar</a></li>').listview('refresh');
                $("#del_ben_"+benid).click(function(){
                    //PENDING: CONFIRM DIALOG
                    db.transaction( function(tx){
                    tx.executeSql("DELETE FROM Beneficiarios WHERE ID = "+benid),
                    [],
                    console.log(benid+" borrado con éxito!"),
                    onError
                    });
                });
                $("#view_ben_"+benid).click(function(){
                    db.transaction( function(tx){
                    tx.executeSql('SELECT * FROM Beneficiarios WHERE ID = '+benid),
                    [],
                    //SUCCESS ACTION! -- NOT WORKING
                    function(tx, results) {
                        $('#b_nombres').val(results.rows.item.nombres);
                        $('#b_apellidos').val();
                        $('#b_dia').val();
                        $('#b_mes').val();
                        $('#b_año').val();
                        console.log(benid+" shown successfully!") //IS NOT SHOWN AT ALL
                    }
                    console.log(benid+" mostrado shown successfully without function!") //SHOWN AS DESIRED
                    ,
                    onError
                    });
                });
            },
            onError );
        },
        onError );
        });

    $( "#ul-beneficiarios" ).delegate( "li a", "click", function() {
        $(this).parent("li").remove();
        var li_num = $('#ul-beneficiarios li').length;
        if (li_num == 1) {
            addEmptyBeneficiarios('#ul-beneficiarios');
        }
        } );
});

ご想像のとおり、[ADD] ボタンをクリックすると追加される LI を含む UL があり、DB の実行を含め、すべて正常に動作します。

問題は、$("#view_ben_"+benid) をクリックすると正しく実行されますが、成功関数の外側に設定された console.log が表示されますが、SELECT 成功関数が正しく実行されません。誰にもアイデアはありますか?

4

1 に答える 1