2012-08-14 37 views
1

我有以下的(简单的)CoffeeScript的jQuery插件:CoffeeScript的jQuery插件,并试图打电话给外部的jQuery插件

$ = jQuery 

$.fn.extend 
    schoolSelect: (options) -> 
     settings = 
      apiUrl: '/api/v1' 
      debug: false 

     settings = $.extend settings, options 

     log = (msg) -> 
      console?.log msg if settings.debug 

     return @each -> 
      @.dropkick 
       change: (val, label) -> 
        log val 
        log label 

而且我把它在另一个CoffeeScript的文件中像这样:

$('.school_select').schoolSelect 
     debug: true 

但由于某种原因,我不断收到以下错误: Uncaught TypeError: Object #<HTMLSelectElement> has no method 'dropkick'

我正在使用DropKick jQuery插件为我的HTML选择:http://jamielottering.github.com/DropKick/

如何在我的CoffeeScript jQuery插件中访问DropKick插件?

回答

2

这条线:

return @each -> 
     @.dropkick 

有待

return @each -> 
     $(@).dropkick 

在一个jQuery回调每个的情况下,this给你回原始DOM元素(因此关于HTMLSelectElement警告),不是一个jQuery对象。

如果您的插件正在调用另一个插件,则需要确保在扩展jQuery之前完成DropKick插件的设置。

+0

我知道这很简单!谢谢您的帮助!它现在就像一种魅力! – dennismonsewicz 2012-08-14 15:24:46