2015-02-18 3 views
1

Я хочу вызвать функцию JQuery плагин с моей страницы, но я не :(Мой код:JQuery функция плагин вызова

var pstps=$('#psteps_simple_horiz_layout').psteps({ 
     steps_width_percentage: true, 
     alter_width_at_viewport: '1300', 
     steps_height_equalize: true 
    }); 
    step_num=2; 
    pstps.go_to_step(step_num); 

Плагин мастер Pine Шаги Это код:.

function($) { 
$.fn.psteps = function(options) { 
    // Build main options before element iteration. 
    var opts = $.extend({}, $.fn.psteps.defaults, options); 

    // Iterate and transform each matched element. 
    var all_elements = this; 
    all_elements.each(function(){ 
     var psteps = $(this); 
     psteps.psteps_version = "0.0.1alpha"; 
     ....................................................... 
     psteps.go_to_step = function(step_num){ 
      var last_active_title = psteps.find('.step-title.last-active'), 
      ....................................................... 
     }; 
     ....................................................... 
     this.pines_steps = psteps; 
    }); 

    return all_elements; 
}; 

Когда я запускаю мой код, я получаю ошибку:

Uncaught TypeError: undefined is not a function 

ответ

0

это происходит сбой в следующей строке, поскольку go_to_steps не расширение JQuery (А возвращаемое значение psteps() оригинальный JQuery объект:

pstps.go_to_step(step_num); 

Вам нужен экземпляр фактического плагина. Глядя на код плагина, он подключается к экземпляру как свойство на элементе DOM называется pines_steps, так что вам нужно, чтобы получить эту собственность в качестве экземпляра класса:

var pstps=$('#psteps_simple_horiz_layout').psteps({ 
    steps_width_percentage: true, 
    alter_width_at_viewport: '1300', 
    steps_height_equalize: true 
})[0].pines_steps; 

Тогда вы можете позвонить

pstps.go_to_step(step_num); 

Общая картина:

обычный способ плагинов автором является также принимает имя функции, как строка, в первом параметре, поэтому они могут вызывать методы, как это:

$('#psteps_simple_horiz_layout').psteps("go_to_step", step_num); 

однако этот плагин отсутствует код, чтобы сделать это

+0

Да! Это сработало! Убей тебя! –