簡體   English   中英

Ajax元素的VirtueMart“添加到購物車”發送到空的購物車/結帳頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM