javascript回调混乱

时间:2010-12-28 15:09:22

标签: javascript jquery javascript-events jquery-selectors datatables

我是一个新手并且有一个问题导致了一些脱发..原谅我,如果这看似简单或愚蠢的问题..

我使用DataTables显示行数据,右边的最后一列有2个图像,一个用于编辑,一个用于删除。为了捕获我使用的click事件:

 $('#datatable tbody tr a.delete img').live( 'click', function () {
        });

一位朋友(目前不在城里)给了我这个代码试试..

function fancyAlert(msg) {
        jQuery.fancybox({
        'modal' : true,
        'content' : "<div style=\"margin:1px;width:240px;\">"+msg+"<div style=\"text-align:right;margin-top:10px;\"><input style=\"margin:3px;padding:0px;\" type=\"button\" onclick=\"jQuery.fancybox.close();\" value=\"Ok\"></div></div>"
        });
    }

    function fancyConfirm(msg,callback) {
        var ret;
        jQuery.fancybox({
            modal : true,
            content : "<div style=\"margin:1px;width:240px;\">"+msg+"<div style=\"text-align:right;margin-top:10px;\"><input id=\"fancyConfirm_cancel\" style=\"margin:3px;padding:0px;\" type=\"button\" value=\"Cancel\"><input id=\"fancyConfirm_ok\" style=\"margin:3px;padding:0px;\" type=\"button\" value=\"Ok\"></div></div>",
            onComplete : function() {
                jQuery("#fancyConfirm_cancel").click(function() {
                    ret = false;
                    jQuery.fancybox.close();
                })
                jQuery("#fancyConfirm_ok").click(function() {
                    ret = true;
                    jQuery.fancybox.close();
                })
            },
            onClosed : function() {
                callback.call(this,ret);
            }
        });
    }

    function fancyConfirm_text() {
        fancyConfirm("Ceci est un test", function(ret) {
        alert(ret)
        })
    }

当我使用它时会起作用:

`$('#datatable tbody tr a.delete img').live( 'click', function () {

     if (!fancyConfirm("Are you sure you want to delete this record?"))
            e.preventDefault();

 });`

我对回调部分感到困惑,因为当我点击“取消”时,该框会消失,但页面仍然是灰色并锁定。我想要做的是,如果用户单击取消结束并恢复正常,如果用户单击“确定”,那么我需要将var rowID传递给文件“delete_row.php”...但这是新的领域我..如果它是一个简单的HTML链接,我可以得到.val并完成但在DataTables我没有那个选项..

这里有人能指出我正确的方向吗?我已经用谷歌搜索了它,但我无法找到有关我的使用要求的信息。

1 个答案:

答案 0 :(得分:1)

fancyConfirm函数期待回调函数,如果没有给出fancybox onclosed事件中的错误,可能会解释为什么它会保持灰色。

尝试将通话更改为:

fancyConfirm("Are you sure you want to delete this record?", function(ret) { })