代码之家  ›  专栏  ›  技术社区  ›  Alex Zakruzhetskyi

bootstrap star rating插件导致错误:Uncaught TypeError:$(…)。评级不是一项功能

  •  0
  • Alex Zakruzhetskyi  · 技术社区  · 8 年前

    plugin bower install bootstrap-star-rating --save . 在视图中(这是一个Rails项目),我有一段代码:

    <%= form.text_field :rating,
                                id: :review_rating,
                                class: 'form-item large-6 cell',
                                placeholder: 'Rating*',
                                required: true %>
    

    public/layout application.js . 在里面 config/application.rb 我有一段代码:

    config.assets.paths << Rails.root.join('public', 'layout')
    

    所以 layout 我用来初始化星级的代码是:

    $('#review_rating').rating({
            min: 1,
            max: 5,
            step: 1,
            size: 'sm',
            theme: 'krajee-uni'
        });
    

    为什么我会出错: Uncaught TypeError: $(...).rating is not a function bower.json 作为依赖?

    1 回复  |  直到 8 年前
        1
  •  0
  •   fabOnReact    8 年前

    第行中存在触发错误的函数 498 bootstrap star-rating github存储库

    $.fn.rating = function (option) {
        var args = Array.apply(null, arguments), retvals = [];
        args.shift();
        this.each(function () {
            var self = $(this), data = self.data('rating'), options = typeof option === 'object' && option,
                theme = options.theme || self.data('theme'), lang = options.language || self.data('language') || 'en',
                thm = {}, loc = {}, opts;
            if (!data) {
                if (theme) {
                    thm = $.fn.ratingThemes[theme] || {};
                }
                if (lang !== 'en' && !$h.isEmpty($.fn.ratingLocales[lang])) {
                    loc = $.fn.ratingLocales[lang];
                }
                opts = $.extend(true, {}, $.fn.rating.defaults, thm, $.fn.ratingLocales.en, loc, options, self.data());
                data = new Rating(this, opts);
                self.data('rating', data);
            }
    
            if (typeof option === 'string') {
                retvals.push(data[option].apply(data, args));
            }
        });
        switch (retvals.length) {
            case 0:
                return this;
            case 1:
                return retvals[0] === undefined ? this : retvals[0];
            default:
                return retvals;
        }
    };
    

    该功能不包括在您的资产管道中。 star-rating.js 文件不包括在您的 application.js

    要测试这一点,只需运行服务器 rails s ,打开页面,然后用 f12

    enter image description here

    有了ruby on rails,我不用bower来安装插件,也许在你的浏览器中包含所有相关的js、css文件和图像就足够了 应用js公司 , .scss

    https://github.com/kartik-v/bootstrap-star-rating

    如果您有任何其他问题,请告诉我。