【问题标题】:CoffeeScript jQuery plugin and trying to call to external jQuery pluginCoffeeScript jQuery 插件并尝试调用外部 jQuery 插件
【发布时间】:2012-08-14 23:22:53
【问题描述】:

我有以下(简单的)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'

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

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

【问题讨论】:

    标签: jquery jquery-plugins coffeescript


    【解决方案1】:

    这一行:

        return @each ->
            @.dropkick
    

    需要

        return @each ->
            $(@).dropkick
    

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

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

    【讨论】:

    • 我知道这很简单!谢谢您的帮助!它现在就像一个魅力!
    猜你喜欢
    • 2012-04-25
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    相关资源
    最近更新 更多