JQueryオンラインショッピングカートモジュール

オンラインストアを開発するとき、プロジェクトごとに繰り返されるいくつかのことを行うために、javascript(より具体的にはそのフレームワークであるjQuery)を使用する必要がありました。 たとえば、バスケットへの商品の追加、ページ上の商品の数量と合計金額に関する情報の更新、バスケットから商品を1つずつ削除し、数量を変更して、バスケットからすべての商品を完全にクリアします。 そしてもちろん、ページをリロードせずにこれらすべてを行います。

そして、将来のプロジェクトで簡単に使用できるようにコードを書く必要があるという結論に達しました。



そのため、jQueryを使用してオンラインストアのバスケットを操作するためのモジュールを作成しています。

JavaScriptコードのみを公開することを予約します。サーバーの部分には触れず、クライアントとサーバーが交換するデータを指定します。



メソッドを決定します。

(function($) { $.Cart = { init : function(settings){ //   }, add : function(context){ //         1. }, get : function(){ //           }, count : function(context) { //           }, del : function(context) { //      }, clear : function() { //    }, showMessage : function(message) { //      } } })(jQuery);
      
      







初期化:

初期化で何をする必要がありますか?

initメソッドに渡される設定は、適切に処理され(デフォルトのパラメーターと組み合わせて)、適用される必要があります。また、設定で設定された対応するイベントハンドラーが要素でハングする必要があります。

デフォルト設定を決定します。

 var defaults = { content : '.content', //       count : '.prod span font', //   .prod       summ : '.summ span font', //   .prod   add : '.tocart', //  ,          addattr : 'name', //  ,  ID  counta : '.carts .actions .count input', //         countattr : 'name', //  ,  ID  countvattr : 'value', //  ,    del : '.carts .actions .delete input', //  ,     1       delattr : 'name', //  ,  ID  clear : '.cartclear', //  ,        topcart : '.topcart', //      urladd : '/cart/add/', // url     urlget : '/cart/get/', // url          urlcart : '/cart/', // url    urlcount : '/cart/count/', // url      urlclear : '/cart/clear/', // url    urldel : '/cart/del/', // url       type_message : 'flash', //        time_message : 3000, //    interval : 10000 //  ,                };
      
      





初期化中に指定されたパラメーターをデフォルトのパラメーターと混合して適用します

 $.extend(defaults, settings); this.settings = defaults;
      
      





バスケット内の製品の数と合計金額に関する情報でブロックを更新し、指定された要素にイベントハンドラーをハングアップし、オブジェクトのエンティティを返します(便利な場合があります)。

 this.get(); //   setInterval(function(){ $.Cart.get(); //        }, this.settings.interval); $(this.settings.add).click(function(){ $.Cart.add(this); //         settings.add,       }); $(this.settings.counta).live('blur', function(){ $.Cart.count(this); //    ,       ,     }); $(this.settings.del).live('click', function(){ $.Cart.del(this); //        "" }); $(this.settings.clear).live('click', function(){ $.Cart.clear(); //   }); return this;
      
      







1個のアイテムをバスケットに1個追加します。

addメソッドは、コンテキストパラメーター(クリックされた要素)を取得し、サーバーにデータを送信します。

 $.ajax({ url : $.Cart.settings.urladd, //    type : 'post', //  dataType: 'json', //  ,   data : {id : $(context).attr($.Cart.settings.addattr)}, // ,   (id  ) success : function(data){ //    if (data.count && data.summ || data.count===0 && data.summ===0) { //           ,    $($.Cart.settings.count).html(data.count); //      $($.Cart.settings.summ).html(data.summ); //      if (data.count>0) //     ,  $($.Cart.settings.topcart).find('a').attr('href', $.Cart.settings.urlcart); //      else //    $($.Cart.settings.topcart).find('a').attr('href', 'javascript:void(0);'); //    $.Cart.showMessage('<p>'+data.message+'</p>'+$($.Cart.settings.topcart).html()); //   } });
      
      







バスケット内の製品数と合計金額に関する情報を取得し、ブロックを更新します(getメソッド)。

getメソッドとaddの違いは、データの送信先のURLとパラメーターにあります(getメソッドはパラメーターを渡しません)。

 $.ajax({ url : $.Cart.settings.urlget, type : 'post', dataType: 'json', data : {}, success : function(data){ if (data.count && data.summ || data.count===0 && data.summ===0) { $($.Cart.settings.count).html(data.count); $($.Cart.settings.summ).html(data.summ); if (data.count>0) $($.Cart.settings.topcart).find('a').attr('href', $.Cart.settings.urlcart); else $($.Cart.settings.topcart).find('a').attr('href', 'javascript:void(0);'); } });
      
      







コードを再利用するために、urlとvars(パラメーター)が渡されるupdateCartメソッドを追加できると思います。

 $.ajax({ url : data.url, type : 'post', dataType: 'json', data : data.vars, success : function(data){ if (data.count && data.summ || data.count===0 && data.summ===0) { $($.Cart.settings.count).html(data.count); $($.Cart.settings.summ).html(data.summ); if (data.count>0) $($.Cart.settings.topcart).find('a').attr('href', $.Cart.settings.urlcart); else $($.Cart.settings.topcart).find('a').attr('href', 'javascript:void(0);'); $.Cart.showMessage('<p>'+data.message+'</p>'+$($.Cart.settings.topcart).html()); } }, error : function(err) { if (err.status!==200) console.log(err.status+' '+err.statusText); } });
      
      







次に、addメソッドがこれに変更されます。

 $.Cart.updateCart({ url : $.Cart.settings.urladd, data : {id : $(context).attr($.Cart.settings.addattr)} });
      
      







Getメソッド

 $.Cart.updateCart({ url : $.Cart.settings.urlget, data : {} });
      
      







そのアイテムに対応するフィールドのフォーカスが失われた場合の、1つのアイテムの商品の数量の変化。

 count : function(context) { //   count   context ( -   ) $.post($.Cart.settings.urlcount, { //     url   id : $(context).attr($.Cart.settings.countattr), // ID   count : $(context).attr($.Cart.settings.countvattr) //     }, function(data){ //   (text/html) $($.Cart.settings.content).html(data); //     $.Cart.get(); //       }); },
      
      







名前を削除します。

 del : function(context) { //   del   context ( -       ) $.post($.Cart.settings.urldel, { //   id : $(context).attr($.Cart.settings.delattr) // ID  }, function(data){ //   (text/html) $($.Cart.settings.content).html(data); //     $.Cart.get(); //       }); },
      
      







バスケットを空にします。

 clear : function() { $.post($.Cart.settings.urlclear, {}, function(data){ $($.Cart.settings.content).html(data); //   data    ,    $.Cart.get(); //     ,       }); },
      
      







バスケットへの製品の追加に関するメッセージ(アラートまたはフラッシュのタイプに応じて)。

 showMessage : function(message) { //    if ($.Cart.settings.type_message==='alert') { //  alert alert(message); //   return; } else if ($.Cart.settings.type_message==='flash') { //  flash if ($('.flashmessage').length===0) //        ,  $('<div />').addClass('flashmessage').html(message).hide().appendTo('body').fadeIn(); //  ,    ,      </body>,    else //   $('.flashmessage').html(message); //      if (typeof($.Cart.message_time)==='number') //          clearTimeout($.Cart.message_time); //   $.Cart.message_time = setTimeout(function(){ //    $('.flashmessage').fadeOut(function(){ //       $(this).remove(); //      }); }, $.Cart.settings.time_message); //    } }
      
      







今、私たちはすべてを統合します。

ここでは、モジュールの例を見ることができます、

ここでアーカイブにダウンロードできます



モジュールが追加および修正されます。



ご清聴ありがとうございました。 批判、質問、コメントを楽しみにしています。

オンラインストアで作業するために、これを特定のAPIに改良したいという要望があります。



All Articles