我熟悉Turbolinks问题,但似乎我的修复工作无效。
我有这个:
var ready = function () {
$('.add_to_cart').click(function (e) {
e.preventDefault();
var pid = $(this).attr('data-pid');
$.post('/cart/'+ pid, function(data){
var data = JSON.parse(JSON.stringify(data));
$('#items-in-cart').text(data['cart_size']);
console.log(data);
});
});
};
$(document).ready(ready);
$(document).on('page:load', ready);
我的javascript不会触发文档加载。我必须刷新。我已经在其他页面上完成了此修复,并且它有效。我还应该尝试/寻找什么?
编辑:
我正在使用jquery(通过jquery-rails gem,3.1.2)
我在jquery中发现了这个错误:
Uncaught TypeError: undefined is not a function
ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
.apply( matched.elem, args );
找到对此错误的引用' here
编辑2:
这是我的html.slim:
=link_to "Add to Cart", "#", class: 'add_to_cart', data: {pid: @product.id}
如果我摆脱了这一行,我的其余javascript函数在页面加载的就绪块中工作。如果我保留它,我会得到Uncaught TypeError。
编辑3:
我从我的应用程序中删除了turbolinks,它运行正常。我想继续使用turbolinks,但在这一点上,这是我唯一的解决方案。
答案 0 :(得分:0)
您需要绑定click事件,因为内容是通过ajax加载的,请执行此操作
$('body').on('click', '.add_to_cart', function(e){
// js code
});