星星評分的改進

工作日志之星級評分

今天主要完成了幾件事情:

  1. 完成了博客標簽的生成與鏈接暇检,并且通過js實現(xiàn)了標簽與文章使用同一個模板的需求产阱,繼續(xù)加油!
  2. 接到了二手車的修改任務块仆,雖然花了幾乎一天的時間心墅,但是好在在7點半左右完成了,所以心情很好榨乎,因為通過自己的努力,解決了問題瘫筐,對自己的學習和自信是一個很好的促進作用蜜暑。

廢話不多說,開始今天的主題:星級評分
再翻看自己之前寫的代碼的時候策肝,發(fā)現(xiàn)代碼結構臃腫肛捍,而且多處判斷是不對的,所以在調整完css的樣式后開始重寫了星級評分之众;
在制作css部分今天使用了一個非常好用的工具:csssprites,非常好用拙毫,而且方便的css雪碧圖生成工具,省去了我一大把時間棺禾,接著就是關鍵的js部分了缀蹄。

按照正常的星級評分來說需要做到:

  1. 鼠標劃到某顆星星,則該星星與之前的星星都會變亮膘婶,鼠標移出去恢復默認樣式缺前;
  2. 點擊某顆星后,該星以及之前的星星會亮悬襟。

難點:

  1. 星星劃上去后衅码,左右移動的時候,鼠標之前的星星一直亮著不會變化脊岳;
  2. 點擊星星后逝段,鼠標移出去會觸發(fā)鼠標移出的事件與星星外div移出事件;
  3. 每次點擊后鼠標滑動離開后之前被點擊到的星星依然亮著割捅;

先放html結構:

<div class="start-item">
   <a href="javascript:;"></a><!--
   --><a href="javascript:;"></a><!--
   --><a href="javascript:;"></a><!--
   --><a href="javascript:;"></a><!--
   --><a href="javascript:;" class="last-start"></a>
</div>

收獲及總結:

  1. 設想當鼠標滑到其中一個星星的時候如果往左滑動奶躯,會出現(xiàn)星星亮-滅-亮的過程,導致很不自然的過渡棺牧,開始我是給a標簽加上了 display: inline-block;然后使用padding讓所有星星挨著的巫糙,但是后來發(fā)現(xiàn)變成inline-block后,a標簽之間的空格也會被算上距離颊乘,所有我給a標簽加上了\用來注釋掉之間的距離参淹,從而達到了鼠標劃傷去左右滑動不會閃爍的情況醉锄,其中有一個小插曲:使用setTimeout,通過給鼠標移出的事件加上這個然后在鼠標進入的時候判斷定時器的id是否存在浙值,來取消或者進行加減class恳不。(ps:這種方式也可以用來給resize,scroll事件加上定時多少秒再次調用的功能开呐;)

     var startStatus;//存儲定時器的id
     xxx.mouseenter:
         if startStatus
             clearTimeout(startStatus)
     
     xxx.mouseout:
         this.removeClass('active')
         startStatus = setTimeout(function(){
             this.prevAll().removeClass('active')
         },200)
    
  2. 當我點擊的時候我本來是要讓從點擊的星星開始到其之前所有的星星都會亮烟勋,但是當鼠標劃上去的時候又消失的,所有這個糾結了很久筐付,試過好幾種方法,使用過通過off來解綁的卵惦,但是都失敗了,因為貌似綁定的事件對象不同瓦戚,當我用on的時候是給所有的a加上了代理事件沮尿,當我click的時候,點擊的是當前的a標簽较解;我通過xxx.off('.removeStart',this)的方式來進行解綁畜疾,但是還是存在問題,事件要么是給所有的a標簽解綁了還是只是當前的印衔,但是這種走不通啡捶。
    最后我通過看了網上的demo清楚了自己對需求理解的不到位,問題的沖突在于點擊后同時觸發(fā)了包裹層的鼠標出事件奸焙。
    使用off無法解決后瞎暑,使用了布爾值,但是第二次點擊仍然有問題与帆,最后誤打誤撞的寫下了正確的想法金顿。

其實是這樣的,只需要給鼠標移處事件加上一個判斷鲤桥;
首先如何確定是第二次點擊呢揍拆?所以我設置了三個全局變量:

var chose=false, //控制鼠標離開事件執(zhí)行的函數(shù)
    startIndex, //存儲點擊后的index
    $startP;  //存儲星星父級jquery對象

其中chose就是用來開關的,
我在點擊的時候存了startIndex和$startP兩個變量茶凳;一個當前點擊星星的序列嫂拴,另一個是當前星星包裹層的jquery對象;
然后當我鼠標移出的時候贮喧,我判斷chose是否為true筒狠,如果是的話說明已經點擊了星星,那么箱沦,鼠標移出后辩恼,之前點擊到的星星依舊會亮著,然后進而判斷startIndex是否存在,如果存著說明已經點過了灶伊,然后亮起來星星疆前,如果沒有,則鼠標移出后刪除所有a標簽的class聘萨;

最后有一個問題是竹椒,什么時候重置那三個屬性?

后來我在click事件里面加了一個判斷米辐,是否是第一次點擊胸完,條件是startIndex,如果startIndex存在的話說明已經點過一次了翘贮,重置startIndex和$startP赊窥,如果第一次點擊的話,將chose默認為false狸页,然后在點擊下一題那里也是通過這個來判斷的誓琼。

function holdStart(){
  $startP.children().each(function(index,elem){
    if(index < startIndex){
      $(elem).addClass('active');
    }else{
      $(elem).removeClass('active');
    }
  })
}
$dialog.on('click','.easy-test .container .step-base .start-item a',function(){ 
  if(!startIndex){
    chose = !chose;
  }
  $startP = '';
  startIndex = '';
  var $tips = $('.easy-test .container .tips');
  $tips.hide();
  flag = true;
  var _this = $(this);
  $startP = $(this).parent();
  startIndex = _this.index()+1;
  
  _this.prevAll().addClass('active');
  _this.addClass('active');

  
  console.log(chose);
});

其實通過寫這篇文章主要是想要理清一下去解決一個問題的思路:首先是需要描述清楚需要達到的效果,然后分效果進行完成肴捉,說起來自己的邏輯思維能力太差勁了,有時候轉不過彎來叔收,做事太死板齿穗。為什么沒有想到那種解決方案呢?
最關鍵的思路是在鼠標離開的時候進行判斷饺律。

GitHub Demo地址:
https://github.com/CodeDreamfy/CodeDemo/tree/development/start-pingfen

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末窃页,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子复濒,更是在濱河造成了極大的恐慌脖卖,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巧颈,死亡現(xiàn)場離奇詭異畦木,居然都是意外死亡,警方通過查閱死者的電腦和手機砸泛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門十籍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人唇礁,你說我怎么就攤上這事勾栗。” “怎么了盏筐?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵围俘,是天一觀的道長。 經常有香客問我,道長界牡,這世上最難降的妖魔是什么簿寂? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮欢揖,結果婚禮上陶耍,老公的妹妹穿的比我還像新娘。我一直安慰自己她混,他們只是感情好烈钞,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坤按,像睡著了一般毯欣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上臭脓,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天酗钞,我揣著相機與錄音,去河邊找鬼来累。 笑死砚作,一個胖子當著我的面吹牛,可吹牛的內容都是我干的嘹锁。 我是一名探鬼主播葫录,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼领猾!你這毒婦竟也來了米同?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤摔竿,失蹤者是張志新(化名)和其女友劉穎面粮,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體继低,經...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡熬苍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了袁翁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冷溃。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖梦裂,靈堂內的尸體忽然破棺而出似枕,到底是詐尸還是另有隱情,我是刑警寧澤年柠,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布凿歼,位于F島的核電站褪迟,受9級特大地震影響,放射性物質發(fā)生泄漏答憔。R本人自食惡果不足惜味赃,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望虐拓。 院中可真熱鬧心俗,春花似錦、人聲如沸蓉驹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽态兴。三九已至狠持,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瞻润,已是汗流浹背喘垂。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绍撞,地道東北人正勒。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像傻铣,于是被迫代替她去往敵國和親章贞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內容

  • HTML標簽解釋大全 一矾柜、HTML標記 標簽:!DOCTYPE 說明:指定了 HTML 文檔遵循的文檔類型定義(D...
    米塔塔閱讀 3,240評論 1 41
  • 總結: 鼠標事件 1.click與dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r閱讀 1,605評論 2 10
  • 美食與美衣全都能拯救人于沮喪之中,一個人專注于審美的過程就谜,就是納悅自己怪蔑,滋養(yǎng)身心的過程,這個過程妙不可言丧荐。 木心先...
    曌則璀璨閱讀 343評論 1 0
  • 今天傍晚缆瓣,偶遇一明媚女子,看著特別舒服虹统,記之弓坞。 辦完事回來,順路去大名(一家板栗店的名字)買板栗车荔。大名板栗位于老市...
    行云流水joy閱讀 348評論 11 6
  • 11月7日 因為我沒有跟她打招呼而生氣渡冻,而且不相信我沒有看見她,聲稱一個星期都不再理我忧便。最后拿全家人的性命發(fā)毒誓才...
    名再道號直行閱讀 127評論 0 0