2012-01-04 32 views
10

Tôi muốn gọi một hàm bên trong plugin jquery của tôi (dựa trên widget-factory).jquery - làm thế nào để gọi một hàm với các tham số bên trong một plugin widget-factory?

Trông như thế này:

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

Tôi muốn gọi stackUp từ bên ngoài của các plugin. Vấn đề: Tôi không biết làm thế nào để vượt qua các thông số một cách chính xác. Điều này không hoạt động:

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

Ai đó có thể chỉ cho tôi cú pháp chính xác gọi một chức năng công khai bên trong một plugin và truyền tải thông số?

UPDATE:

tôi có thể gọi hàm như thế này:

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

nhưng làm thế nào tôi có thể vượt qua các thông số?

Trả lời

21

Ok, sau khi can thiệp bất tận, các tham số hoặc đối số được truyền như thế này:

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

Bạn chỉ cần thêm các thông số sau khi chức năng được phân cách bởi dấu phẩy. Hy vọng điều này sẽ giúp người khác, quá.

+0

cảm ơn! vì thông tin! –

+0

'' # trigger'' đề cập đến ở đây là gì ?: S – OZZIE

+0

@OZZIE: yếu tố có id 'trigger' nhưng đây là một thời gian trước đây. vẫn giúp – frequent

1

Tôi không phải là rất quen thuộc với jquery nhưng cố gắng này:

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

Đây là một chức năng ẩn danh mà sẽ được thực hiện trên nhu cầu với các thông số tĩnh và năng động của bạn.

+0

hm. không thể có stackUp để bắn như thế này. – frequent

+0

Có thể đó là dấu ngoặc kép còn thiếu. Tôi sẽ thêm chúng. – rekire

+0

Hàm allonymous của bạn rất đẹp, nhưng không bao giờ được kích hoạt trong kịch bản của tôi. Tôi đã tìm ra cách tiện lợi. Xem câu trả lời của tôi. Thanx để được giúp đỡ! – frequent

1

Tôi không thực sự biết làm thế nào plugin mở rộng và cho thấy chức năng của mình nhưng tôi sẽ đoán bạn có thể thử một trong các cách sau:

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

Tuy nhiên nó hoàn toàn có thể là họ không tiếp xúc với phương pháp đó. Bạn có mã ở đâu đó không?

CẬP NHẬT

Sau khi thực sự tìm ra những gì plugin này là tôi đọc lên trên các tài liệu và bạn sẽ có thể todo:

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

Xem nguồn ở đây: http://jqueryui.com/demos/widget/default.html - và nhìn vào random hàm được xác định.

Hoặc bạn chỉ có thể xác định hàm trong phạm vi toàn cục hơn và sau đó sử dụng nó như một phần của đối tượng cấu hình và khi bạn muốn áp dụng nó cho các phần tử cụ thể.

+0

trả về: kết quả của biểu thức '$ .mobile.widget.stackUp' [không xác định] không phải là một đối tượng. Giữ. hãy để tôi thử lại. Nah. không hoạt động. – frequent

+0

bạn có nghĩa là mã nào? widget-factory? – frequent

+0

có, bạn có nó trong jsFiddle hoặc sống ở đâu đó? – nav

Các vấn đề liên quan