1

私は次の(単純な)CoffeeScriptjQueryプラグインを持っています:

$ = 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'

DropKickHTMLの選択にjQueryプラグインを使用しています:http: //jamielottering.github.com/DropKick/

CoffeeScript jQueryプラグイン内のDropKickプラグインにアクセスするにはどうすればよいですか?

4

1 に答える 1

2

この行:

    return @each ->
        @.dropkick

する必要があります

    return @each ->
        $(@).dropkick

それぞれのjQueryコールバックのコンテキストではthis、jQueryオブジェクトではなく、生のDOM要素(したがって、HTMLSelectElementに関する警告)を返します。

プラグインが別のプラグインを呼び出している場合は、jQueryを拡張する前に、DropKickプラグインのセットアップが完了していることを確認する必要があります。

于 2012-08-14T15:22:53.723 に答える