jQueryUI选项中的条件If语句?

时间:2010-05-10 20:48:15

标签: javascript jquery jquery-ui

我有一个JavaScript函数,我正在传递一个参数,打开一个jQueryUI对话框。我希望对话框根据参数的值有一个或两个按钮。我该怎么做?

到目前为止,我已经尝试过:

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'); }
            }
    });
}

这两个都彻底破坏了我的页面。

2 个答案:

答案 0 :(得分:3)

buttons是一个JavaScript文字对象。你可以这样做:

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

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

答案 1 :(得分:1)

这样做的一般方法是:

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

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

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