javascript - select2-rails gem : installed assets and called function but dropdown not changing (TypeError: undefined is not a function)

标签 javascript jquery css ruby-on-rails ruby

在 SO 上有几篇与此类似的帖子,但我还没有找到一个答案检查正确的帖子。我正在尝试按照 GitHub page 中的说明在我的 Rails 3.2 应用程序中实现 select2-rails gem。 .我捆绑了 gem 并包含了 javascript 和 css 文件。然后我添加了一个 js 函数调用,就像 sample code 中的那样。 .但是,我的选择栏根本没有改变。

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 包括:

# application.css.less
/*
 *= require_tree .
 *= require select2
 *= require select2-bootstrap
 *= stub active_admin
*/

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

# 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:

$(document).ready(function() { $("#e1").select2(); });
</script>
      <select id='e1'>
        <option value='AL'>Alabama</option>
        <option value='WY'>Wyoming</option>
      </select>

所有这些只会产生一个正常的选择下拉菜单,没有 select2 样式/功能。

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

Uncaught TypeError: undefined is not a function 

我对 Javascript 不是很熟悉,但我猜这意味着函数 `select2()' 有问题。但是,我不确定如何开始调试它,因为我已经逐字逐句地遵循了 gem 安装说明。当我查看页面源代码时,我看到正在加载的 select2 js 库如下:

<script src="/assets/select2.js?body=1" type="text/javascript"></script>

最佳答案

错误可能与你两次加载 jQuery 有关:

//= require jquery
//= require jquery_ujs
//= require select2
//= require jquery-1.11.0.min.js

您正在做的是加载 jquery,然后加载 select2。然后加载第二个 jQuery,它消除了第一个 jQuery(具有与之关联的 select2)。所以当你打电话时:

$("#e1").select2();

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

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

关于javascript - select2-rails gem : installed assets and called function but dropdown not changing (TypeError: undefined is not a function),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25771127/

相关文章:

javascript - 检查数组中的元素是否使用 ASCII 代码

javascript - 使用进度条添加短信

javascript - 堆叠 div,使它们不重叠

javascript - Bootstrap Carousel 在最后一张幻灯片后禁用克隆

javascript - 使用 Cakephp 的 javascript 中图像的正确路径

移动网络浏览器中的 javascript

javascript - jQuery - 使用 appendTo 移动元素无法正常工作

javascript - Bootstrap 表单不会在点击时提交

javascript - jquery 问题 :on click function is not showing the h3 title?

css - 着色下拉菜单