CoffeeScript jQuery插件并尝试调用外部jQuery插件

时间:2012-08-14 15:14:13

标签: jquery jquery-plugins coffeescript

我有以下(简单)CoffeeScript 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插件?

1 个答案:

答案 0 :(得分:2)

这一行:

    return @each ->
        @.dropkick

需要

    return @each ->
        $(@).dropkick

在每个jQuery回调的上下文中,this会返回一个原始DOM元素(因此有关HTMLSelectElement的警告),而不是jQuery对象。

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