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 从决定函数返回 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插件呢?

尝试即兴

http://trentrichardson.com/Impromptu/

于 2012-06-08T17:41:05.973 回答