首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >select2-rails gem:已安装的资产和被调用的函数,但是下拉列表不改变(TypeError: undefined不是一个函数)

select2-rails gem:已安装的资产和被调用的函数,但是下拉列表不改变(TypeError: undefined不是一个函数)
EN

Stack Overflow用户
提问于 2014-09-10 17:03:22
回答 1查看 1.3K关注 0票数 0

有几个类似的帖子,所以,但我还没有找到一个答案是正确的。我正试图按照GitHub页面的说明在Rails 3.2应用程序中实现select2-rails创业板。我捆绑了gem并包含了javascript和css文件。然后,我添加了一个js函数调用,类似于样本代码中的函数调用。然而,我的选择栏一点也没有变化。

Javascript包括:

代码语言:javascript
复制
# application.js
//= require jquery
//= require jquery_ujs
//= require select2
//= require jquery-1.11.0.min.js
//= require lightbox.min.js
//= require parsley
//= require ./jquery.datetimepicker.js
//= require Stripe/jquery.payment.js
//= require_tree .

CSS包括:

代码语言:javascript
复制
# application.css.less
/*
 *= require_tree .
 *= require select2
 *= require select2-bootstrap
 *= stub active_admin
*/

我的页面带有表单,只是试图复制这个示例:

代码语言:javascript
复制
# new.html.haml

=content_for :title, 'Post a job'
= javascript_include_tag "https://js.balancedpayments.com/1.1/balanced.js"
:javascript
  var _balanced_marketplace = "#{@balanced_marketplace}";
  var _categories = #{raw(@categories.to_json)};
  $(document).ready(function() { $("#e1").select2(); });
...
...
%select{id: "e1"}
  %option{value: "AL"} Alabama
  %option{value: "WY"} Wyoming

我的脚本的末尾和HAML生成的HTML:

代码语言:javascript
复制
$(document).ready(function() { $("#e1").select2(); });
</script>
      <select id='e1'>
        <option value='AL'>Alabama</option>
        <option value='WY'>Wyoming</option>
      </select>

所有这一切只是导致一个正常的选择下拉,没有select2样式/功能。

在Javascript控制台中,我看到函数调用出现以下错误:

代码语言:javascript
复制
Uncaught TypeError: undefined is not a function 

我对Javascript并不十分熟悉,但我猜这意味着函数‘`select2 2()’有问题。但是,我不知道如何开始调试它,因为我已经逐字逐句地遵循了gem安装说明。当我查看页面源时,我看到加载的select2 js库如下所示:

代码语言:javascript
复制
<script src="/assets/select2.js?body=1" type="text/javascript"></script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-10 20:44:33

这个错误可能与您两次加载jQuery有关:

代码语言:javascript
复制
//= require jquery
//= require jquery_ujs
//= require select2
//= require jquery-1.11.0.min.js

您要做的是加载jquery,然后加载select2。然后加载第二个jQuery,它清除了第一个jQuery (它与select2相关联)。所以当你打电话:

代码语言:javascript
复制
$("#e1").select2();

select2不再存在于第二个jQuery上。

我无法想象您真的需要加载两个jQueries,所以去掉一个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25771127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档