首先,我的Jquery知识非常有限,但我正在阅读和练习以解决这个问题,所以如果这是一个非常基本的问题,请耐心等待。由于标题声明我在我的rails应用程序中收到错误消息
$(".share a").button is not a function
我的application.js文件包含此
$(function() {
$(".share a")
.button()
.click(function() {
var a = this;
// first set the title of the dialog box to display the folder name
$("#invitation_form").attr("title", "Share '" + $(a).attr("folder_name") + "' with others");
// a hack to display the different folder names correctly
$("#ui-dialog-title-invitation_form").text("Share '" + $(a).attr("folder_name") + "' with others");
// then put the folder_id of the share link into the hidden field "folder_id" of the invite form
$("#folder_id").val($(a).attr("folder_id"));
// the dialog box customization
$("#invitation_form").dialog({
height: 300,
width: 600,
modal: true,
buttons: {
// first button
"Share": function() {
// get the url to post the data to
var post_url = $("#invitation_form form").attr("action");
// serialize the form data and post it the url with ajax
$.post(post_url, $("#invitation_form form").serialize(), null, "script");
return false;
},
// second button
Cancel: function() {
$( this ).dialog( "close" );
}
},
close: function() {
}
});
return false;
});
});
我的视图页面包含这个来调用jquery(我认为)
<div class="share">
<%= link_to "Share", "#", :folder_id => folder.id, :folder_name => folder.nameunless @is_this_folder_being_shared %>
</div>
任何人都可以告诉我为什么我会得到这个错误,因为我可以看到它应该工作,I.E。当我点击标有共享的按钮时,我会看到一个带有我的邀请表的弹出窗口。
任何帮助表示赞赏,因为我现在陷入困境 - 最后我被告知我可能忘记包含Jquery UI,但我在我的应用程序中有这个库,尽管我已经开始怀疑我是否有2个冲突的库因为我在同一目录中有Jquery-ui和jquery-ui-1.8.9.custom.min.js?有谁知道是否可能出现这种情况?
这是我的资产管道
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require twitter/bootstrap
//= require_tree .
和jquery-ui-1.8.9.custom在我的javascripts中(没有其他用户界面)
答案 0 :(得分:1)
由于jquery-ui.js
正在加载,但是浏览器javascript引擎无法找到函数button
,可能是问题是由于'按钮'小部件被排除在jquery之外 - ui构建您正在使用的。您可以通过构建包含窗口小部件的新脚本并使用该脚本代替当前jquery-ui.js
来验证这一点。如果它有效,那就是你的答案。