2012-01-04 4 views
10

Chcę wywołać funkcję wewnątrz mojej wtyczki jquery (opartej na widgetach).jquery - jak wywołać funkcję z parametrami wewnątrz wtyczki widget-factory?

wygląda następująco:

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

chcę zadzwonić stackUp z zewnątrz wtyczki. Problem: nie wiem, jak poprawnie przekazać parametry. To nie działa:

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

Czy ktoś może wskazać mi składni correcty wywołania funkcję publiczną wewnątrz wtyczki i przekazując parametry?

UPDATE:

mogę wywołać funkcję tak:

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

ale w jaki sposób można przekazać parametry?

Odpowiedz

21

Ok, po niekończących się wtrącania, parametry i argumenty są przekazywane tak:

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

Po prostu trzeba dodać parametry po funkcji oddzielone przecinkiem. Mam nadzieję, że to pomoże też komuś innemu.

+0

dzięki! za informacje! –

+0

co to jest '' # trigger'' odnoszące się tutaj?: S – OZZIE

+0

@OZZIE: element o identyfikatorze 'trigger', ale to było jakiś czas temu. nadal pomaga – frequent

1

nie jestem bardzo obeznany z jquery ale spróbuj tego:

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

Jest anonimowa funkcja, która zostanie wykonana na potrzeby ze swoimi parametrów statycznych i dynamicznych.

+0

hm. nie można zmusić StackUp, aby strzelał w ten sposób. – frequent

+0

Może to brakujące cytaty. Dodam je. – rekire

+0

Twoja allonimowa funkcja jest przyjemna, ale nigdy nie wystrzeliła w moim skrypcie. Dowiedziałem się, jak wygląda widgety. Zobacz moją odpowiedź. Niż za pomoc! – frequent

1

ja naprawdę nie wiem jak to plugin rozszerza i naraża swoje funkcje, ale przypuszczam można wypróbować jedną z następujących czynności:

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

Jednak jej całkiem możliwe, że nie narażać tej metody. Czy gdzieś masz kod?

UPDATE

Po rzeczywiście dowiedzieć się, co ten plugin jest ja przeczytać na docs i powinieneś być w stanie todo:

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

źródłowy tutaj: http://jqueryui.com/demos/widget/default.html - i spojrzeć na random zdefiniowana funkcja.

Alternatywnie można po prostu zdefiniować funkcję w bardziej globalnym zasięgu, a następnie użyć jej jako części obiektu konfiguracyjnego i wtedy, gdy chcemy zastosować ją do określonych elementów.

+0

która zwraca: wynik wyrażenia '$ .mobile.widget.stackUp' [undefined] nie jest obiektem. Wstrzymać. Pozwól mi spróbować jeszcze raz. Nah. nie działa. – frequent

+0

który kod masz na myśli? widget-fabryka? – frequent

+0

tak, czy masz go w jsFiddle lub gdzieś mieszkasz? – nav