2010-05-10 3 views
4

J'ai une fonction JavaScript à laquelle je passe un argument, qui ouvre une boîte de dialogue jQueryUI. Je veux que le dialogue ait un ou deux boutons, basé sur la valeur de l'argument. Comment dois-je faire cela?Conditionnel Si les instructions sont dans les options de jQueryUI?

Jusqu'à présent, j'ai essayé:

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

et

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

qui ont tous deux complètement brisé ma page.

Répondre

3

buttons est un objet littéral JavaScript. Vous pourriez faire quelque chose comme ceci:

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

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

Merci, cela fonctionne parfaitement. Une autre question - J'ai besoin du bouton pour avoir le texte de "Download PPT". Définir un var btn = "Télécharger PPT" et faire des boutons.btn = function() {} n'a pas fonctionné - des suggestions? – jbreed

+0

Peu importe, je l'ai - c'est boutons ["Télécharger PPT"] – jbreed

1

d'une manière générale de le faire est comme ceci:

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

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

L'idée est que vous créez une fonction où vous pouvez prendre des décisions, puis retourner le résultat vous décidez.

Questions connexes