0

私のHTMLコード

<div id="delete">Delete</div>

私のJavaScriptコード

$(function(){
$("#delete").click(function(){
var decision=decide("Do you really want to delete?");
});
});
function decide(str)
{
$("delete").after(str+'<button onclick="yes()">Yes</button><button onclick="no()">No</button>');
}
function yes(){return 1;}
function no(){return 0;}

現在、yesとnoは0/1を返していますが、no/yesに応じてdecide関数から0/1を返したいです。

4

2 に答える 2

0

コードは非同期です。decisionこの方法で変数に割り当てることはできません。

つまりdecide、ユーザーがボタンをクリックする前に関数が戻り、常に。を返しundefinedます。

そのブール値で何をしたいのかは、それらのyes/no関数内から行う必要があります。


コールバックを提供する方法の簡単なサンプルを次に示します。

$(function() {
    $("#delete").click(function(){
        decide("Do you really want to delete?", function(result) {            
            alert(result);
        });

        return false;
    });

    function decide(str, callback)
    {
        $('<div>'+str+'<button>Yes</button><button>No</button></div>')
            .insertAfter("#delete")

            .on('click', 'button', function() {
                var result = $(this).text() == 'Yes' ? true : false;
                console.log($(this).text(), result);

                callback(result);
            });
    }
});​

これがデモです:http://jsfiddle.net/x2Lf9/

于 2012-06-08T17:40:10.833 に答える
0

jqueryプラグインを簡単に使用してみませんか?

Impromptuをお試しください

http://trentrichardson.com/Impromptu/

于 2012-06-08T17:41:05.973 に答える