jQuery onclick 必须单击两次才能出现模式对话框

标签 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;                                                                                                                                       
});                                                                                                                                                     

});

最佳答案

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

第一次单击,对话框将被初始化。

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

第二次点击终于打开了。

<小时/>

要么,将调用移至 init 之后、return false 之前;

$("#del-"+id+"").dialog(dialogOpts);
$("#del-"+id+"").dialog("open");
return false;

或者将选项autoOpen更改为true并删除“open”方法调用

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

关于jQuery onclick 必须单击两次才能出现模式对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9296552/

相关文章:

javascript - 我可以为多个 JQuery Accordion 使用一个 Javascript 函数吗?

javascript - 删除触摸开始目标后,触摸移动事件不会触发

javascript - Firefox 缺少 window.event 的解决方法?

docker - Spinnaker 构建不会在重新推送现有标签(如最新)时触发

postgresql - 在 postgreSQL 中插入、删除表,如 SQL Server?

c# - 单击文本框时的 MVC Ajax 请求?

javascript - jquery 切换 id 而不是类?

javascript - 向下滚动页面时粘性表格标题单元格?

javascript - 事件监听器是否需要位于 IIFE 内部?

更新或插入时触发 mysql - 更新受影响行中的字段