jQuery onclick必须单击两次才能显示模式对话框

时间:2012-02-15 15:50:07

标签: jquery events triggers click

此代码有效,但需要单击“genbutton-delete”类的元素才能工作。有人可以帮帮我吗?

$(document).ready(function(){                                                                                                                               
$(".genbutton-delete").click(function(){                                                                                                                
    var id = $(this).attr("id");                                                                                                                        
    $("#del-"+id+"").dialog("open");                                                                                                                    
    var dialogOpts = {                                                                                                                                  
        modal: true,                                                                                                                                    
        bgiframe: true,                                                                                                                                 
        autoOpen: false,                                                                                                                                
        width: 400,                                                                                                                                     
        buttons: {                                                                                                                                      
            "Delete": function() {                                                                                                                      
                $.ajax({                                                                                                                                
                    type: "post",                                                                                                                       
                    url: ""+siteURL+"/a/delete?media="+id+"",                                                                                           
                    data: "delete=1",                                                                                                                   
                    success: function(data) {location.href="?delete=1";}                                                                                
                });                                                                                                                                     
            },                                                                                                                                          
            "Cancel": function() {$(this).dialog("close");}                                                                                             
        },                                                                                                                                              
        open: function() {                                                                                                                              
            $("#del-"+id+"").load(""+siteURL+"/a/delete?media="+id+"");                                                                                 
            $("#loader-"+id+"").show();                                                                                                                 
        }                                                                                                                                               
    };                                                                                                                                                  
    $("#del-"+id+"").dialog(dialogOpts);                                                                                                                
    return false;                                                                                                                                       
});                                                                                                                                                     

});

3 个答案:

答案 0 :(得分:6)

您尝试在初始化之前打开对话框!

首先单击,对话框初始化。

$("#del-"+id+"").dialog("open"); // does nothing
// init the dialog but does not open because autoOpen: false
$("#del-"+id+"").dialog(dialogOpts);  

第二次点击它终于打开了。


要么,请在初始化之后和return false;

之前将调用移至方法“open”
$("#del-"+id+"").dialog(dialogOpts);
$("#del-"+id+"").dialog("open");
return false;

将选项autoOpen更改为true并删除“打开”方法调用

//$("#del-"+id+"").dialog("open");                                                                                                                    
var dialogOpts = {                                                                                                                                  
    ...                                                                                                                               
    autoOpen: true,                                                                                                                                
    ...                                                                                                                                               
};                                                                                                                                                  
$("#del-"+id+"").dialog(dialogOpts);

答案 1 :(得分:1)

在对话框全部设置之前,您似乎正在调用对话框(“打开”)。因此,您必须再次单击该按钮才能打开它。

试试这个。

$(document).ready(function(){                                                                                                                               
$(".genbutton-delete").click(function(){                                                                                                                
    var id = $(this).attr("id");                                                                                                                                                                                                                                
    var dialogOpts = {                                                                                                                                  
        modal: true,                                                                                                                                    
        bgiframe: true,                                                                                                                                 
        autoOpen: false,                                                                                                                                
        width: 400,                                                                                                                                     
        buttons: {                                                                                                                                      
            "Delete": function() {                                                                                                                      
                $.ajax({                                                                                                                                
                    type: "post",                                                                                                                       
                    url: ""+siteURL+"/a/delete?media="+id+"",                                                                                           
                    data: "delete=1",                                                                                                                   
                    success: function(data) {location.href="?delete=1";}                                                                                
                });                                                                                                                                     
            },                                                                                                                                          
            "Cancel": function() {$(this).dialog("close");}                                                                                             
        },                                                                                                                                              
        open: function() {                                                                                                                              
            $("#del-"+id+"").load(""+siteURL+"/a/delete?media="+id+"");                                                                                 
            $("#loader-"+id+"").show();                                                                                                                 
        }                                                                                                                                               
    };                                                                                                                                                  
    $("#del-"+id+"").dialog(dialogOpts);      
    $("#del-"+id+"").dialog("open");  
    return false;                                                                                                                                       
}); 

答案 2 :(得分:1)

其他答案是正确的但是从你的代码中我可以看到没有必要初始化并单独显示它,特别是如果你使用的是最新版本的jQuery-UI那么你甚至不用担心打开或关闭它为对话重用相同的元素。

   $(document).ready(function(){                                                                                                                               
      $(".genbutton-delete").click(function(){                                                                                                                
        var id = $(this).attr("id");                                                                                                                        
        $("#del-"+id+"").dialog({                                                                                                                                                                                                                                               
            modal: true,                                                                                                                                    
            bgiframe: true,                                                                                                                                 
            autoOpen: true,                                                                                                                                
            width: 400,                                                                                                                                     
            buttons: {                                                                                                                                      
                "Delete": function() {                                                                                                                      
                    $.ajax({                                                                                                                                
                        type: "post",                                                                                                                       
                        url: ""+siteURL+"/a/delete?media="+id+"",                                                                                           
                        data: "delete=1",                                                                                                                   
                        success: function(data) {location.href="?delete=1";}                                                                                
                    });                                                                                                                                     
                },                                                                                                                                          
                "Cancel": function() {$(this).dialog("close");}                                                                                             
            },                                                                                                                                              
            open: function() {                                                                                                                              
                $("#del-"+id+"").load(""+siteURL+"/a/delete?media="+id+"");                                                                                 
                $("#loader-"+id+"").show();                                                                                                                 
            }                                                                                                                                               
        });                                                                                                                                                  
        return false;                                                                                                                                       
      });                                                                                                                                                     
    });