![](/img/trans.png)
[英]Virtuemart 2 - New 'Add to cart' button with Ajax on VM default front Page
[英]VirtueMart “Add to cart” of Ajax element sends to empty Cart/Checkout page
我正在開發一個模塊,以使用Ajax分頁系統加載Virtumemart產品。
很簡單,例如,首先加載時,將有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 ) );
}
);
預先謝謝您,這實際上是我在此處發布的唯一選擇。
之所以會發生這種情況,是因為click事件未在動態加載的HTML部分上觸發。
也就是說,當Ajax加載的內容在具有4種產品的瀏覽器上顯示時,其單擊事件不起作用,這是因為單擊事件注冊了那些HTML部分不在文檔中的時間。
解決方案是檢查添加到購物車按鈕的代碼,該代碼使用普通jQuery click()
編寫, jQuery click()
根據您的jQuery
版本將其更改為on()
或live()
事件。
例如:
jQuery('.addtocart').click(function(){
//code for adding items to the cart
});
如果使用的是jQuery 1.7或更低版本,請更改為use 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
});
希望它的作品..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.