JQuery OnClick должны дважды щелкнуть, чтобы появилось модальное диалоговое окно - PullRequest
1 голос
/ 15 февраля 2012

Этот код работает, но элемент с классом "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 ]

6 голосов
/ 15 февраля 2012

Вы пытаетесь открыть диалоговое окно перед его инициализацией!

Первый щелчок, ваш диалог инициализируется.

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

Второй щелчок, когда он наконец открывается.


Либо , переместите вызов метода "open" после инициализации и до return false;

$("#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 голос
/ 15 февраля 2012

Другие ответы верны, но из вашего кода я вижу, что нет необходимости инициализировать и показывать его отдельно, особенно если вы используете последнюю версию 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;                                                                                                                                       
      });                                                                                                                                                     
    });
1 голос
/ 15 февраля 2012

Похоже, вы вызываете диалоговое окно ("открыть") до того, как весь диалог настроен.Таким образом, вам нужно снова нажать кнопку, чтобы открыть ее.

Попробуйте это.

$(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;                                                                                                                                       
}); 
...