2015-04-20 7 views
0

Я использую плагин jquery.webui-popover.js. Я получил его на работу со следующим кодом:Обтекание одной функции внутри другой

$('.button').webuiPopover({ 
    placement: 'bottom', 
    title: 'Link Item to Button', 
    content: '123', 
    animation: 'pop', 
    delay: { 
     show: null, 
     hide: 300 
    }, 
}); 

Однако я пытаюсь обернуть его в своей собственной функции, как я называю его в моем коде нескольких элементов в разное время. Я изменил его:

function AddCreatePopoverBinding(element) { 

    element.webuiPopover({ 
     placement: 'bottom', 
     title: 'Link Item to Button', 
     content: '123', 
     animation: 'pop', 
     delay: { 
      show: null, 
      hide: 300 
     }, 
    }); 
} 

И затем вызвать его дальше вниз в моем коде с помощью:

$('.button').AddCreatePopoverBinding(); 

Однако я получаю следующее сообщение об ошибке:

Uncaught TypeError: $(...).AddCreatePopoverBinding is not a function

Что я делаю неправильно? Я попытался использовать оператор .each для вызова функции, но это также не удалось.

+4

Вы должны объявить функцию на прототипе jQuery: '$ .fn.AddCreatePopoverBinding = function() {return this.webuiPopover ({...});};' И называть его так же, как вы: '$ ('. Button') .AddCreatePopoverBinding(); ' –

ответ

3

Как A. Wolff говорит, вы должны были бы то, что известно как jQuery Plugin сделать это, то есть добавить функцию в пространство имен JQuery:

$.fn.AddCreatePopoverBinding = function() { 
    return this.webuiPopover({ 
     placement: 'bottom', 
     title: 'Link Item to Button', 
     content: '123', 
     animation: 'pop', 
     delay: { 
      show: null, 
      hide: 300 
     }, 
    }); 
} 

Это должно также позволить chaining:

var button = $('.button').AddCreatePopoverBinding(); 
console.log(button.text()); 
+0

Теперь я должен признать, что я не вижу причин, по которым OP не вызывает непосредственно '$ ('. Button'). WebuiPopover (options);'?! –

+0

Возможно, они обертывают 'webuiPopover' некоторыми другими повторными функциями и пытаются сохранить вещи СУХОЙ. Кто знает :) – CodingIntrigue

1

Вы можете позвонить функцию следующим образом:

AddCreatePopoverBinding($('.button')); 
+3

Не должен быть параметр jQuey-Object вместо строки? Так вот так: AddCreatePopoverBinding ($ ('. Button')); '? – empiric

+0

Да, извините, я забыл это;) – kapantzak

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