【发布时间】:2019-01-31 04:44:24
【问题描述】:
我收到了这个使用 select2 JS 库的 Rails 应用程序,但无法弄清楚为什么它没有设置我的选择列表的样式。它正在生产中工作。
我从生产服务器的快照创建了一个登台服务器。
我已经运行 rake assets:clobber && rake assets:precompile 成功了。我检查了编译好的 application.js 和 application.css 文件,里面有 JS 代码和样式。
我可以在控制台中运行$(".classIwant").select2();,它会为选择列表设置样式,但当我选择一个选项时它不会做任何事情。
在控制台中运行$(".classIwant").select2(); 后我也收到此错误:
[违规] 执行 JavaScript 时强制重排耗时 49 毫秒
请原谅我的无知,因为这是我第一次使用这个 JS 库。任何帮助将非常感激。提前致谢。
更新#1:
当我将以下代码复制到控制台并手动运行App.init(); 时,它可以工作。为什么页面加载不出来。
(function() {
window.App || (window.App = {});
App.init = function() {
$(".classIwant").select2();
$('#search').on("keyup", function() {
return searchTable($(this).val());
});
$('#search-list').on("keyup", function() {
return searchList($(this).val());
});
$("#the_id").on('change', function(e) {
return $(this).parent().submit();
});
return $('#preloader').delay(200).fadeOut();
};
$(document).on("page:change", function() {
return App.init();
});
$(window).on("load", function() {
$('#status').fadeOut();
return $('#preloader').delay(200).fadeOut();
});
}).call(this);
更新#2: 这是生产代码。这有点不同。我不确定是什么导致编译器缩小生产代码并以不同方式编译它。我在控制台中使用了漂亮的打印来更好地看到它。有什么想法吗?
function() {
window.App || (window.App = {}),
App.init = function() {
return $(".classIwant").select2(),
$("#search").on("keyup", function() {
return searchTable($(this).val())
}),
$("#search-list").on("keyup", function() {
return searchList($(this).val())
}),
$("#the_id").on("change", function() {
return $(this).parent().submit()
}),
$("#preloader").delay(200).fadeOut()
}
,
$(document).on("page:change", function() {
return App.init()
}),
$(window).on("load", function() {
return $("#status").fadeOut(),
$("#preloader").delay(200).fadeOut()
})
}
.call(this),
【问题讨论】:
-
选择选项时有错误吗?
-
当我第一次加载页面时没有错误。当我运行
$(".classIwant").select2();时,现在选择了样式。当我单击选择列表时,控制台日志 [Violation] 'mousedown' 处理程序耗时 152 毫秒 [Violation] 执行 JavaScript 时强制重排耗时 43 毫秒 -
是否正在加载大量数据?还有那些是warnings.. 还有其他原因导致点击什么也没发生..
-
不,它没有加载大量数据。
-
然后是您的应用程序中的其他原因导致它,.. 并且 select2 不能作为副作用工作。
标签: javascript ruby-on-rails jquery-select2