2010-04-13 12 views
7

Creé un archivo somefile.js donde somefile.js contiene algún método jQuery. Por ejemplo, contiene esta función:

function showWindow(divID) 
{ 
    var dialogDiv = $(divID); 

    dialogDiv.dialog 
    (
     { 
      bgiframe: true, 
      modal: true, 
      autoOpen: false, 
      show: 'blind' 
     } 
    ) 

    dialogDiv.dialog("open"); 
} 

Así que en mi página .aspx (o lo que sea, podría ser una .html), tengo un botón:

<input type="button" onclick="showPopUp('testDiv')" value="Click Me!" /> 

mi pregunta es, vamos a utilizar ShowPopup todo en nuestra aplicación. Si se llama desde un evento onClick, ¿dónde pongo mi $ (document) .ready (function() ya que este código no está en la página, sino en un archivo .js?

Respuesta

4

Puede ponerlo en el archivo Javascript si lo desea. Si está conectando oyentes con el atributo onclick así, en realidad no necesita usar $ (document) .ready().

Sin embargo, generalmente se considera mejor forma de no utilizar el atributo onclick, y adjuntar al oyente en Javascript, así:

<input type = "button" class = "showPopup" id = "testDiv" value = "Click Me!" />

$(document).ready(function(){ 
    $("input.showPopup").click(function(){ 
    showWindow($(this).id); 
    } 

    function showWindow(id){...} 
} 

Se puede retener que javascript en la cabeza de la documento como ~ ricebowl dijo.

+0

oh shi ** es cierto, no quiero utilizar onclick. Duh. – PositiveGuy

+0

Aplaudo su sugerencia de utilizar clases para identificar la entrada, en lugar de mi propio método -antiguo y estúpido. ¡Buena llamada! =) –

5

Coloque el $(document).ready(...); en el head del (x) página HTML (o, de hecho, .php, .aspx, etc) de forma normal, con tal de que se asegure de que se trata después de que el archivo vinculado script (a cargar su somefile.js) y, por supuesto, el enlace a su jQuery:

<head> 
... 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="somefile.js"></script> 

<script> 
    $(document).ready(
    function() { 
     $('input[type=button]').click().showPopUp('testDiv'); 
    } 
    ) 
</script> 

</head> 


Editado señalar que me siento que me falta algo obvio en su pregunta. Comente si estoy siendo completamente obvio y falta su punto ...

0

La respuesta técnica "correcta" variará según el marco (PHP, ASP.NET, etc.) Si desea utilizar esta función en toda su aplicación , se puede utilizar una etiqueta de script:

<script type="javascript" src="somefile.js" /> 

esa etiqueta se pueden incluir en una "cabecera de la página incluye", implementado en la manera que sea mejor. Por ejemplo, en ASP.NET incluiría esa etiqueta en la página Maestra.

0

que tienes que hacer esto: Dividir la función en dos:

MakeDialog (divID) // esta manera se prepara el div a ser un cuadro de diálogo y ShowDialog (divID) // Aquí es donde se muestra el cuadro de diálogo

//document load 
$(document).ready(function(){ 
    MakeDialog(divId);//prepa 
}); 

function makeDialog(divID) 
{ 
    var dialogDiv = $(divID); 

    dialogDiv.dialog 
    (
     { 
      bgiframe: true, 
      modal: true, 
      autoOpen: false, 
      show: 'blind' 
     } 
    ) 
} 

function showWindow(divId) 
{ 
dialogDiv.dialog("open"); 
} 

HTH

Cuestiones relacionadas