How2j仿寫天貓五購物車

全選

選中一個

6.6日 16:11更新購物車

我胡漢三又回來了匾二,有幾天沒更新了吧哮独,慚愧!
昨天到今天終于把購物車啃出來了察藐,不容易啊〗杷裕現(xiàn)在想想也不是挺難嘛,為何還看了那么久转培。是不是有點馬后炮恶导,哈哈。怎么說呢浸须,購物車需要寫的jquery挺多的惨寿,一開始看到那么多久頭疼。

因為里面有的功能是重復(fù)的删窒,所以把重復(fù)的內(nèi)容拿出來放到函數(shù)里裂垦,需要用到時在調(diào)用他。全選肌索,圖片前面的小框其實是圖片蕉拢,選中的時候就換成選中的圖片。我一開始還以為這是一個復(fù)選框呢。不過晕换,這樣也更容易實現(xiàn)午乓,挺佩服站長的。

選中圖片時闸准,小框圖片換成選中的圖片益愈,當(dāng)前行改變背景色,下面的結(jié)算按鈕背景也換成紅色夷家,還要判斷是不是所有行的圖片都選中了蒸其,如果選中了就把全選換成選中。所以库快,在這個事件里摸袁,要調(diào)用的三個函數(shù),分別實現(xiàn)這些义屏。

<script>
$("img.cartProductItemIfSelected").click(function(){
      var selectit =  $(this).attr("selectit");
      if("selectit" == selectit){
        $(this).parents("tr.trInfo").css("background-color" , "white");
        $(this).attr("src" , "http://how2j.cn/tmall/img/site/cartNotSelected.png");
        $(this).attr("selectit" , "false");
      }
      else{
        $(this).parents("tr.trInfo").css("background-color" , "#FFF8E1");
        $(this).attr("src" , "http://how2j.cn/tmall/img/site/cartSelected.png");
        $(this).attr("selectit" , "selectit");
      }
       checkAll();
       accountNumber();
       accountBotton();
      });
</script>

當(dāng)鼠標(biāo)點擊小方框時但惶,取出當(dāng)前元素的selectit,這個元素屬性是自定義的,初始化為false湿蛔,
當(dāng)selectit為false時代表未選中膀曾,為selectit時代表選中。然后就判斷selectit是否為selectit如果相等阳啥,就把背景色改成和原來一樣添谊,圖片改成未選中,并且把selectit改為false.如果是false,把背景色改成黃色察迟,圖片改成選中斩狱。改變背景色,這里用的是$(this).parents("tr.trInfo").css();代表的是當(dāng)前元素的tr.trInfo這個父元素扎瓶,如果parents("tr.trInfo")括號為空所踊,則默認為他的所有父元素。

現(xiàn)在就是調(diào)用其他函數(shù)了概荷,先調(diào)用checkAll()這個函數(shù)秕岛,代表全選是否打開,代碼如下误证。

 function checkAll(){
    var selectAll = true;
    $("img.cartProductItemIfSelected").each(function(){
        if ("false" == $(this).attr("selectit"))
              selectAll = false;
    });
     if (selectAll){
        $("img.selectAllItem").attr("src" , "http://how2j.cn/tmall/img/site/cartSelected.png");
     }
     else{
        $("img.selectAllItem").attr("src" , "http://how2j.cn/tmall/img/site/cartNotSelected.png" );
     }
   }

先遍歷每行小方框继薛,把每個小方框的selectit屬性都拿來和false比較,判斷是否有沒有被選中的愈捅,只要有一個未被選中遏考,就把變量selectAll設(shè)為假,然后就判斷變量蓝谨。如果為真 灌具,就把全選改為選中青团,為假則相反。

接下來就是** accountNumber();**這個函數(shù)了咖楣,這個函數(shù)是把結(jié)算那里的價格改成選中的價格督笆。代碼如下

     function accountNumber(){
        var sum = 0;
        var totalNum = 0;
     $("img.cartProductItemIfSelected[selectit = 'selectit']").each(function(){
      var oiid =    $(this).attr("oiid");
      var price = $("span.priceMoney[oiid = "+oiid+"]").text();
      price = price.replace(/,/g , "");
      price = price.replace(/¥/g , "");
      sum += new Number(price);
      var ShuRu = $("input.inputSee[oiid = "+oiid+"]").val();
      totalNum += new Number(ShuRu);
       });
      $("span.JiaGe1").html("¥" + formatMoney(sum));
      $("span.JiaGe2").html("¥" + formatMoney(sum));
      $("JianShu").html(totalNum);
    }

** $("img.cartProductItemIfSelected[selectit = 'selectit']").each(function()這句代碼,代表遍歷選中的小方框截歉,oiid也是自定義的屬性胖腾,然后獲取當(dāng)前元素屬性oiid的值烟零,在金額那里也設(shè)了這個屬相瘪松,并且和當(dāng)前行相等,每一行的oiid**值都不一樣锨阿,這樣才好找每一行的金額宵睦。

** var price = $("span.priceMoney[oiid = "+oiid+"]").text();** 這樣就是找和當(dāng)前元素oiid值一樣的金額,并把金額里的文本內(nèi)容取出來墅诡。因為金額里面有¥和,這兩個符號壳嚎,所以就用replace這個函數(shù)去掉,然后把取出來的金額相加末早,還有下面有一個件數(shù)烟馅,再把件數(shù)取出來相加。最后改變結(jié)算按鈕前面文本內(nèi)容為相加后的金額然磷,件數(shù)郑趁。

最后調(diào)用** accountBotton();**函數(shù),這個函數(shù)是改變按鈕背景色以及解除禁用姿搜。代碼如下寡润。

function accountBotton(){
     var buttonAll = false;
     $("img.cartProductItemIfSelected").each(function(){
        if ("selectit" == $(this).attr("selectit")){
            buttonAll = true;
        }
        
     });
     if (buttonAll){
         $("button.button1").css("background-color" , "#C40000");
         $("button.button1").removeAttr("disabled");
        }
     else{
        $("button.button1").css("background-color" , "#AAAAAA");
        $("button.button1").attr("disabled" , "disabled");
        
     }
   }

 }); 

改變背景色,遍歷小方框舅柜。如果小方框有一個選中了梭纹,就改變按鈕的背景色,并解除禁用致份。disabled屬性是禁用按鈕变抽,也就無法鼠標(biāo)點擊按鈕,沒選中就相反氮块。

下面就是鍵盤按下輸入框事件發(fā)生的 事了瞬沦,代碼如下。

 $("input.inputSee").keyup(function(){
        var pid = $(this).attr("pid");
        var XianZhi = $("span.XianZhi[pid = "+pid+"]").text();
        var price = $("span.spanShu[pid = "+pid+"]").text();
        var num = $("input.inputSee[pid = "+pid+"]").val();
        num = parseInt(num);
        if (isNaN(num))
            num = 1;
        if (num > XianZhi)
            num = XianZhi;
        if (num <= 0)
            num = 1;
        synPrice(pid , price , num);
      });

pid也是自定義的屬性雇锡,和oiid差不多主要是找到一行的數(shù)據(jù)紐帶逛钻。XianZhi
這個標(biāo)簽是庫存, 也就是最大值锰提。和spanShu這兩個標(biāo)簽是隱藏的曙痘,設(shè)這兩個標(biāo)簽主要是取值方便芳悲。取出輸入框的值,不能是字符不能超過庫存和小于0边坤,然首把取到的值放到下面的函數(shù)名扛,代碼如下。

function synPrice(pid, price , num){
        $("input.inputSee[pid = "+pid+"]").val(num);
        var totalNum = formatMoney(price * num);
        $("span.priceMoney[pid = "+pid+"]").html("¥" + totalNum);
        accountNumber();

     }

把輸入框和pid值相等的寫入修改好的值茧痒,再把金額那里的內(nèi)容修改成增加后的值肮韧。

  $("a.aTop").click(function(){
        var pid = $(this).attr("pid");
        var XianZhi =  $("span.XianZhi[pid = "+pid+"]").text();
        var price = $("span.spanShu[pid = "+pid+"]").text();
        var num = $("input.inputSee[pid ="+pid+"]").val();
        num--;
        if (num <= 0)
            num = 1;
        synPrice(pid , price , num);
      });
 $("a.aDown").click(function(){
        var pid = $(this).attr("pid");
        var XianZhi =  $("span.XianZhi[pid = "+pid+"]").text();
        var price = $("span.spanShu[pid = "+pid+"]").text();
        var num = $("input.inputSee[pid ="+pid+"]").val();
        num++;
        if (num > XianZhi)
            num = XianZhi;
        synPrice(pid , price , num);
      });

上面兩個事件,分別是點擊+和-后發(fā)生的事旺订,比較簡單弄企。下面的是把金額修改成千為表示法,也就是在千位后加分號区拳。

function formatMoney(num){
    num = num.toString().replace(/\$|\,/g,'');  
    if(isNaN(num))  
        num = "0";  
    sign = (num == (num = Math.abs(num)));  
    num = Math.floor(num*100+0.50000000001);  
    cents = num%100;  
    num = Math.floor(num/100).toString();  
    if(cents<10)  
    cents = "0" + cents;  
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)  
    num = num.substring(0,num.length-(4*i+3))+','+  
    num.substring(num.length-(4*i+3));  
    return (((sign)?'':'-') + num + '.' + cents);  
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拘领,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子樱调,更是在濱河造成了極大的恐慌约素,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笆凌,死亡現(xiàn)場離奇詭異圣猎,居然都是意外死亡,警方通過查閱死者的電腦和手機乞而,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門送悔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人晦闰,你說我怎么就攤上這事放祟∶徘” “怎么了啸驯?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肌割。 經(jīng)常有香客問我声滥,道長眉撵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任落塑,我火速辦了婚禮纽疟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘憾赁。我一直安慰自己污朽,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布龙考。 她就那樣靜靜地躺著蟆肆,像睡著了一般矾睦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上炎功,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天枚冗,我揣著相機與錄音,去河邊找鬼蛇损。 笑死赁温,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的淤齐。 我是一名探鬼主播股囊,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼床玻!你這毒婦竟也來了毁涉?” 一聲冷哼從身側(cè)響起沉帮,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锈死,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后穆壕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體待牵,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年喇勋,在試婚紗的時候發(fā)現(xiàn)自己被綠了缨该。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡川背,死狀恐怖贰拿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情熄云,我是刑警寧澤膨更,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站缴允,受9級特大地震影響荚守,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜练般,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一矗漾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧薄料,春花似錦敞贡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虑稼。三九已至,卻和暖如春势木,著一層夾襖步出監(jiān)牢的瞬間蛛倦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工啦桌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留溯壶,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓甫男,卻偏偏與公主長得像且改,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子板驳,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容