2015-04-23 2 views
0

Я пытаюсь расширить объект jQuery, но с некоторым трудом это делаю.Методы добавления JavaScript к объектам

$(document).ready(function() { 
    $('.single-item').slick({ 
     dots: true, 
     infinite: false, 
     speed: 500, 
     customPaging: function(slider, i) { 
      // Theres a lot of stuff in this, removed for brevity 
     }, 
     progressBar: function(slider, i) { 
      // Want to create this method 
      // alert is not defined 
      window.onload(window.alert("YES")); 
     } 
    }); 
    // slick is not defined 
    console.log(typeof(slick)); 
}); 

Я пытаюсь много таких вещей, как с помощью JQuery в "расширить":

var progressBar = function(slider, i) { 
    window.onload(window.alert("YES")); 
}; 
$.extend(slick, progressBar); 
// Also tried '.slick-slider' in place of slick 

попытался также реализации:

$.fn.progressBar = function(i) { 
    window.onload(alert(this.i)) 
}; 

$('.single-item').progressBar(i); 

"customPaging" существует в основном JS-файла , который я не хочу изменять, а скорее расширять дополнительные методы для объекта. В качестве параметров требуется «ползунок» и «i». Поскольку он уже существует в основном js-файле, его было достаточно легко манипулировать.

Однако я хочу создать совершенно новый метод, называемый «progressBar», который также имеет доступ к переменным «слайдер» и «i» объекта.

Может ли кто-нибудь помочь мне понять, что происходит, и продемонстрировать, как создать метод «progressBar», как я хочу?

+3

'slick' не определен, потому что он находится в' $ .fn.slick'. Что касается остальных, покажите нам, как именно вы «расширяете» это? – adeneo

+0

Я пробовал использовать «расширенный» метод jQuery, как показано выше, а также «Object.prototype.extend», но я не делаю это правильно, главным образом потому, что не знаю, какой объект я пытаюсь расширить. У тебя есть какой-нибудь совет? – amoeboar

+0

Вы видите, когда вы называете 'slick', вы называете его' $ (element) .slick (options) ', параметры определены внутри плагина, стандартного способа расширения этих параметров нет. – adeneo

ответ

0

Не работает, потому что вы добавляете метод к объекту конфигурации некоторого плагина, не расширяя элемент jquery. Если вы хотите добавить новый метод в плагин, вам, вероятно, придется отредактировать его код.

+0

Я бы предпочел не менять исходный код, потому что обновление bower будет перезаписывать любые изменения, которые я делаю. Скорее, я хотел бы расширить функциональность объекта в отдельном файле js. – amoeboar

Смежные вопросы