frequent
frequent

Reputation: 28533

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?

Upvotes: 11

Views: 10534

Answers (3)

rekire
rekire

Reputation: 47995

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.

Upvotes: 1

frequent
frequent

Reputation: 28533

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.

Upvotes: 22

nav
nav

Reputation: 3125

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.

Upvotes: 1

Related Questions