Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jquery - how to call a function with parameters inside a widget-factory plugin?

I want to call a function inside my jquery-plugin (widget-factory based).

Looks like this:

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

I want to call stackUp from outside of the plugin. The problem: I don't know how to pass the parameters correctly. This does not work:

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

Can somebody point me to the correcty syntax of calling a public function inside a plugin and passing along parameters?

UPDATE:

I can call the function like this:

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

but how can I pass the parameters?

like image 946
frequent Avatar asked Jan 04 '12 12:01

frequent


3 Answers

Ok, after endless meddling, the parameters or arguments are passed like this:

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

You just have to add parameters after the function separated by comma. Hope this helps someone else, too.

like image 179
frequent Avatar answered Oct 25 '22 13:10

frequent


I dont really know how that plugin extends and exposes its functions but I would guess you could try one of the following:

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

However its entirely possible that they don't expose that method. Do you have the code somewhere?

UPDATE

After actually finding out what this plugin is I read up on the docs and you should be able todo:

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

View source here: http://jqueryui.com/demos/widget/default.html - and look at the random function that is defined.

Alternatively you could just define the function in a more global scope and then use it as part of the config object and when you want to apply it to specific elements.

like image 35
nav Avatar answered Oct 25 '22 12:10

nav


I'm not very familiar with jquery but try this:

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

This is an anonymous function which will be executed on need with your static and dynamic parameters.

like image 22
rekire Avatar answered Oct 25 '22 12:10

rekire