2010-05-10 51 views
4

我有一個JavaScript函數,我傳遞一個參數,打開一個jQueryUI對話框。我希望對話框有一個或兩個按鈕,根據參數的值。我應該怎麼做?jQueryUI選項中的條件If語句?

到目前爲止,我已經試過:

function foo(hasFile) { 
    $('#dialog').dialog({ 
     buttons: { 
      Close: function() { $(this).dialog('close'); }, 
      if (hasFile) 
       "Download": // do something 
    } 
    }); 
} 

function foo(hasFile) { 
    $('#dialog').dialog({ 
     buttons: 
      if (hasFile) 
      { 
       "Download": // do something 
       Close: function() { $(this).dialog('close'); } 
      } 
      else 
      { 
       Close: function() { $(this).dialog('close'); } 
      } 
    }); 
} 

兩者都徹底打破我的網頁。

回答

3

buttons是一個JavaScript文字對象。你可以做這樣的事情:

function foo(hasFile) { 
    var buttons = { 
     Close: function() { $(this).dialog('close'); } 
    }; 

    if (hasFile) { 
     buttons.Download = function(){ 
      // Do something. 
     }; 
    } 
    $('#dialog').dialog({ 
     buttons: buttons 
    }); 
} 
+0

謝謝你,完美的作品。還有一個問題 - 我需要按鈕來獲得「下載PPT」的文本。設置var btn =「下載PPT」並執行buttons.btn = function(){}沒有奏效 - 有什麼建議嗎? – jbreed 2010-05-10 21:18:07

+0

沒關係,我知道了 - 它是按鈕[「下載PPT」] – jbreed 2010-05-10 21:50:25

1

一般的方式做到這一點是這樣的:

foo.dialog({ 
    // ... 
    buttons: (function() { 
    function CloseHandler() { 
     // close ... 
    }; 
    function DownloadHandler() { 
     // download ... 
    }; 

    return condition ? 
     { "Download": DownloadHandler, "Close": CloseHandler } : 
     { "Close": CloseHandler }; 
    })(), 
    // ... 
}); 

的想法是,你創建一個函數,你可以做出決定,然後返回結果你決定。