Ajax 元素的美德市场"Add to cart"发送到空的购物车/结帐页面



我正在开发一个模块,用Ajax分页系统加载Virtummart产品。

例如,第一次加载有4个带有"加载更多"按钮的产品,当点击该按钮时,将使用无限滚动和手动触发javascript插件将另外4个产品加载到页面。

问题是"添加到购物车"按钮只适用于第一个加载的产品(加载的前4个产品,但它不适用于通过Ajax添加的新产品。)

我不知道"添加到购物车"系统是如何工作的,但我认为这是因为"vmprices.js"已经加载,它不会通过Ajax 对新添加的产品产生影响

你能建议一个解决方案,使添加到购物车选项在通过Ajax加载的新产品上有效吗(页面不会刷新或再次加载,只有产品通过Ajax加载)

无限滚动中有一个回调函数,我想我应该在那里添加一些代码来重新加载脚本,以便识别新添加的产品:

$container.infinitescroll({
navSelector  : '#page_nav',
nextSelector : '#page_nav a',
itemSelector : '.item',
debug        : false,
path:["fetcher.php?modid=93&perpage=3&page=", ""],
behavior: 'twitter',
loading: {
finishedMsg: '<p class="msg">No more pages</p>',
img: 'loading.gif',
msgText: "<em>Loading</em>",
speed: 'slow'
}
},
function( newElements ) {
$container.iso( 'insert', $( newElements ) );  
}

);

提前谢谢你,这真的是我唯一的选择张贴在这里。

这可能是由于动态加载的HTML部分没有触发点击事件。

也就是说,当Ajax加载的内容与4个产品一起显示在浏览器上时,其点击事件不起作用,因为点击事件注册时间那些HTML部分不在文档中。

解决方案是检查添加到购物车按钮代码,它是用普通的jQuery click()编写的,根据您的jQuery版本将其更改为on()live()事件。

例如:

jQuery('.addtocart').click(function(){
//code for adding items to the cart
});

更改为如果您使用的是jquery 1.7或更低版本,请使用live()

jQuery('.addtocart').live('click',function(){
//code for adding items to the cart
});

对于上述jQuery1.7版本。

jQuery('.addtocart').on('click',function(){
//code for adding items to the cart
});

希望它能起作用。。

相关内容

最新更新