2010-05-10 89 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 }; 
    })(), 
    // ... 
}); 

的想法是,你创建一个函数,你可以做出决定,然后返回结果你决定。