2011-08-06 22 views
8

He definido un evento $ (document) .ready() en la página Site.Master y también quiero definir otro $ (document) .ready() en una de mis vistas parciales (que se usa para mostrar msgs y mensajes de error), y estoy llamando a esta vista parcial en todas las páginas y en todas las vistas parciales ...definición del evento jquery ready en Vista parcial

las vistas parciales se muestran en la página y también usan ventanas emergentes ... trató de esto, pero el evento ready en vista parcial no está disparando

tengo algunas cosas que debe hacer:

  • abetos t, es posible hacer lo que estoy tratando de hacer ...
  • hay páginas que tienen vista parcial y debido a eso una página tiene dos eventos $ (documento) .ready() así que cuando la página está cargada, se haya algunos enfrentamientos entre estos dos eventos ...

y si algún cuerpo puede proporcionar algún ejemplo wth ...

+0

usaste 'ajax' para cargar estas vistas parciales? –

+0

yup im usando ajax.beginform o ajax.actionlink al llamar/actualizar la vista parcial ... –

Respuesta

5

Sí, puede incluir controladores de eventos múltiples listas en la página. Puede ponerlos en el sitio principal, las vistas parciales y la página de visualización, tantas como necesite. Todos deben estar incluidos en las etiquetas de script. Dispararán en el orden en que están incluidos en la página final renderizada. Tenga en cuenta que debe tener cuidado para asegurarse de que el parcial se incluye solo una vez en la página o que no importa si se llama al controlador varias veces.

Ejemplo (no completa):

Maestro:

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="jqueryui.js"></script> 
<script type="text/javascript"> 
     $(function() { 
      // do something for whole page 
     }); 
</script> 

@Html.Partial("ErrorDialog") 

parcial (ErrorDialog)

<div id="errorDialog" style="display: none;" title="Error"> 
    <p>An error occurred</p> 
</div> 
<script type="text/javascript"> 
     $(function() { 
      $('#errorDialog').dialog({ 
      modal: true, 
      autoOpen: false, 
      // more options 
      }); 
     }); 

     function showError(msg) { 
      $('#errorDialog').find('p').html(msg) 
          .stop() 
          .dialog('open'); 
     } 
</script> 
+1

esto no funciona si hay múltiples vistas parciales. la primera vista parcial en el orden hará que su documento esté listo pero no el segundo. –

+2

@PinakinShah Eso no debería ser cierto a menos que algo en el primero (a) falle o (b) impida que los otros se ejecuten. Puedes tener tantos como necesites. Esto debería ser cierto incluso si se cargan a través de AJAX. Tengo un par de páginas que son muy similares donde he dividido el código en dos secciones que se incluyen de forma independiente en función de si alguna propiedad del modelo está presente o no. Funciona de maravilla. – tvanfosson

4

sí que se les permite tener múltiples $(document).ready() en una página asegurarse de que tiene incluido el archivo jquery antes de llamar a esta función. Functions invocado dentro de $(document).ready() llamado en el orden en que se solicitan.

jQuery - multiple $(document).ready ...?

+0

me puede dar cualquier ejemplo, como he dicho intenté, pero el evento listo en vista parcial no se está disparando ... –

+0

@ dvlpr: creo que tvanfosson lo ha escrito, si eso no resuelve tu problema, avísanos !! –

1

Sí, eso es correcto, siempre y vista parcial anterior no tiene ningún error puede tener tantos $ (documento) .ready() como desee y se activará para todos.

Cuestiones relacionadas