簡體   English   中英

jQuery對話框-僅在單擊“ X”按鈕時執行代碼

[英]JQuery Dialog - execute code only when clicking “X” Button

我有一個帶有兩個按鈕的對話框(是-否)。 每個觸發一個功能

$('#divDialog').dialog({
    modal:true,
    width:450,
    resizable: false,          
    buttons: [{
        text: 'Yes',
        click: function () {
            /*Do stuff when clicking yes*/
        }},{
            text: 'No',                
            click: function () {
                /*Do stuff when clicking no*/
            }}],
    close: function(ev, ui){
        /*Do stuff always when closing*/                 
    }
});

我想做的是,單擊頂部的“ X”按鈕時,執行與“否”按鈕相同的代碼。 所以我將代碼放在“關閉”功能中。 但是,當單擊“是”時,代碼也會執行。

單擊“ X”時如何執行該代碼,但單擊“是”時如何執行?

謝謝。

定義一個函數,並在用戶單擊“是”或關閉對話框時調用它。

 $('#divDialog').dialog({
          modal:true,
          width:450,
          resizable: false,          
          buttons: [{
                text: 'Yes',
                click: function () {
                    /*Do stuff when clicking yes*/
                    do_work();
                }},{
                text: 'No',                
                click: function () {
                    /*Do stuff when clicking no*/
          }}],
          close: function(ev, ui){
                     /*Do stuff always when closing*/                 
                    do_work();
                }
       });

function do_work() {
    ....
}

您可以通過在jQueryUI init之外聲明函數來做到這一點:

var onClick = function(ev, ui) {
    console.log(ev);
    if(ev.type == "click") {
        this.isYes = (ev.originalEvent.currentTarget.textContent == "Yes")
        $(this).dialog('close');
    } else {
        if(this.isYes){
            alert("Yes");
        } else {
            alert("No");
        }
    }
}

$('#divDialog').dialog({
    modal:true,
    width:450,
    resizable: false,          
    buttons: [{
        text: 'Yes',
        click: onClick
    },{
        text: 'No',                
        click: onClick
    }],
    close: onClick
});

jsFiddle

您需要做的就是定義一個函數,並在需要時調用它,如下所示。

演示@ 小提琴

function myFunction() {
    alert ("I am clicked");
}

$('#divDialog').dialog({
    modal:true,
    width:450,
    resizable: false,          
    buttons: [{
        text: 'Yes',
        click: function() {}
    }, {
        text: 'No',                
        click: myFunction
    }],
    close: myFunction
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM