2012-01-04 16 views
10

Quiero llamar a una función dentro de mi jquery-plugin (basada en widget-factory).jquery: cómo llamar a una función con parámetros dentro de un complemento widget-factory?

se ve así:

(function($, window) { 
    $.widget("mobile.multiview",$.mobile.widget, { 
     stackUp: function (source, event, data) { 
      ... 
     } 
    } 
}) (jQuery,this); 

Quiero llamar stackup desde fuera del plugin. El problema: no sé cómo pasar los parámetros correctamente. Esto no funciona:

$('#trigger').multiview("stackUp('pagination', fakeEvent, fakeData)"); 

Puede alguien que me señale registrado correctamente la sintaxis de llamar a una función pública dentro de un plugin y que pasa a lo largo de los parámetros?

ACTUALIZACIÓN:

puedo llamar a la función como esta:

$('#trigger').multiview('stackUp'); 

pero ¿cómo puedo pasar los parámetros?

Respuesta

21

Ok, después de la intromisión sin fin, los parámetros o argumentos se pasan de esta manera:

$("#trigger").multiview('stackUp','pagination', fakeEvent, fakeData); 

sólo hay que añadir parámetros después de la función separados por comas. Espero que esto ayude a alguien más, también.

+0

¡gracias! por la información! –

+0

¿a qué se refiere '' # trigger'' aquí: S – OZZIE

+0

@OZZIE: elemento con id de 'trigger' pero esto fue hace algún tiempo. todavía ayuda – frequent

1

no estoy muy familiarizado con jquery pero intente esto:

$("#trigger").multiview(function() { stackUp('pagination', fakeEvent, fakeData); }); 

Esta es una función anónima que se ejecutará en las necesidades de sus parámetros estáticos y dinámicos.

+0

hm. no se puede hacer que stackUp se dispare de esta manera. – frequent

+0

Tal vez sean las citas que faltan. Los agregaré. – rekire

+0

Su función anónima es agradable, pero nunca se disparó en mi secuencia de comandos. Descubrí el camino inquietante. Ver mi respuesta ¡Gracias por la ayuda! – frequent

1

que realmente no saben cómo ese plugin se extiende y expone sus funciones, pero yo supongo que podría intentar una de las siguientes:

$.mobile.widget.stackUp.apply($('#trigger'), ['pagination', fakeEvent, fakeData]); 
$.mobile.multiview.apply($('#trigger'), ['pagination', fakeEvent, fakeData]); 

Sin embargo, su muy posible que no exponga ese método. ¿Tienes el código en alguna parte?

ACTUALIZACIÓN

Después de encontrar realmente lo que este plugin es que leer en los documentos y que debe ser capaz de TODO:

$('#trigger').stackUp(...) 

Ver código fuente aquí: http://jqueryui.com/demos/widget/default.html - y mirar el random función que está definida.

Como alternativa, podría definir la función en un ámbito más global y luego usarla como parte del objeto config y cuando desee aplicarlo a elementos específicos.

+0

que devuelve: el resultado de la expresión '$ .mobile.widget.stackUp' [undefined] no es un objeto. Sostener. Déjame intentar de nuevo. Nah. no funciona – frequent

+0

¿qué código quieres decir? Widget-Factory? – frequent

+0

sí, ¿lo tienes arriba en jsFiddle o vives en algún lado? – nav

Cuestiones relacionadas