2013-07-03 5 views
0

Могу ли я передать нормальную функцию js в плагин jquery, а затем вызвать эту функцию внутри плагина?Чтобы передать нормальную функцию в плагин jquery, а затем вызвать эту функцию внутри плагина?

(function($){ 

    $.fn.extend({ 

    responsive: function(options,callbacks) { 

    var defaults = { 
       setup:      {}, 
       windowTargetWidth:   1903, 
       beforeRespond:    function() {}, 
       onRespond:     function() {}, 
       onElse:      function() {} 
      }; 

      var options = $.extend(defaults, options); 
      var o = options; 

      var $this = this; 

      return this.ready(function(e){ 

       var window_loaded_width = $(window).width(); 

       $(window).resize(function() { 

        options.beforeRespond(ratio); 

        // Make the website responsive 
        if(window_loaded_width < o.windowTargetWidth) 
        { 
         // call the function 
         setup.func; 

         //options.onRespond(ratio); 
        } 
        else 
        { 
         var window_resized_width = $(window).width(); 
         var ratio = window_resized_width/window_loaded_width; 

         options.onElse(ratio); 
        } 

       }); 


      }); 

     } 
    }); 

})(jQuery); 


$(window).responsive({ 
    setup: { 
     func: responsive_element(ratio) 
    }, 

    beforeRespond: function(ratio){ 

     // something happens... 

    }, 

    onRespond: function(ratio){ 

     responsive_element(ratio); 
    }, 
    onElse: function(ratio){ 

     responsive_element(ratio); 
    } 
}); 

function responsive_element(ratio){ 
    $("#container").css({ 
     "width": 5400 * ratio 
    }); 
} 

Конечно, я получаю сообщение об ошибке -

ratio is not defined

для этой линии,

func: responsive_element(ratio) 

Может быть, я это делаю не так?

Поэтому я хочу передать эту функцию в и вызвать его в плагин, что это повторяющееся иметь responsive_element(ratio) два раза или больше, когда я подключить этот плагин к объекту $(window).responsive({...})

В идеале я просто положить в функция один раз в setup или где-нибудь - это возможно?

ответ

0

в вашем случае, чтобы вызвать функцию в пределах вашего плагина использовать o.beforeRespond.call (это)

+0

спасибо. Я получаю это сообщение об ошибке - 'ReferenceError: arg не определен' ... – laukok