jQuery星級評分效果詳解
本章節分享一段程式碼例項,它實現了滑鼠滑過星級評分效果。
這種效果在實際應用中非常常見,下面就詳細介紹一下它的實現過程。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> .list1 { list-style: none; } .list1 li { float: left; cursor: pointer; } </style> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script> $(function () { var aLi = $('.list1 li'); var leng = aLi.length; var arr = ['很差', '較差', '一般', '較好', '很好']; var arr2 = ['demo/jQuery/img/star1.png','demo/jQuery/img/star1.png','demo/jQuery/img/star1.png', 'demo/jQuery/img/star1.png','demo/jQuery/img/star1.png']; var s1 = ''; aLi.click(function () { for (var j = 0; j < leng; j++) { aLi.eq(j).find('img').attr('src', 'demo/jQuery/img/star1.png'); }; var index = $(this).index(); if (index < 2) { for (var j = 0; j <= index; j++) { aLi.eq(j).find('img').attr('src', 'demo/jQuery/img/star2.png'); s1 = arr[index]; arr2[j] = aLi.eq(j).find('img').attr('src'); } } else { for (var j = 0; j <= index; j++) { aLi.eq(j).find('img').attr('src', 'demo/jQuery/img/star3.png'); s1 = arr[index]; arr2[j] = aLi.eq(j).find('img').attr('src'); } }; for (var k = index + 1; k < leng; k++) { arr2[k] = 'demo/jQuery/img/star1.png'; }; $('.s1').text(s1); }); aLi.hover(function () { for (var j = 0; j < leng; j++) { aLi.eq(j).find('img').attr('src', 'demo/jQuery/img/star1.png'); }; var index = $(this).index(); if (index < 2) { for (var j = 0; j <= index; j++) { aLi.eq(j).find('img').attr('src', 'demo/jQuery/img/star2.png'); $('.s1').text(arr[index]); } } else { for (var j = 0; j <= index; j++) { aLi.eq(j).find('img').attr('src', 'demo/jQuery/img/star3.png'); $('.s1').text(arr[index]); } } }, function () { for (var index = 0; index < leng; index++) { aLi.eq(index).find('img').attr('src', arr2[index]); } $('.s1').text(s1); }); }) </script> </head> <body> 服務評價: <ul class="list1"> <li><img src="demo/jQuery/img/star1.png"></li> <li><img src="demo/jQuery/img/star1.png"></li> <li><img src="demo/jQuery/img/star1.png"></li> <li><img src="demo/jQuery/img/star1.png"></li> <li><img src="demo/jQuery/img/star1.png"></li> </ul> <span class="s1"></span> </body> </html>
一.程式碼註釋:
(1).$(function () {}),當文件結構完全載入完畢再去執行函式中的程式碼。
(2).var aLi = $('.list1 li'),獲取li元素集合。
(3).var leng = aLi.length,獲取li元素的數目。
(4).var arr = ['很差', '較差', '一般', '較好', '很好'],陣列中存放的是幾個檔次評論語。
(5).var arr2 = ['demo/jQuery/img/star1.png','demo/jQuery/img/star1.png','demo/jQuery/img/star1.png','demo/jQuery/img/star1.png','demo/jQuery/img/star1.png'],存放預設灰色星星的圖示路徑,後面會用到。
(6).var s1 = '',宣告一個變數並賦值為空,後面會用到。
(7).aLi.click(function () {}),為li元素註冊click事件處理函式,也就是點選以後評分效果就固定了,否則滑鼠離開,評分效果就失效。
(8).for (var j = 0; j < leng; j++) { aLi.eq(j).find('img').attr('src', 'demo/jQuery/img/star1.png');
},通過迴圈的方式將每一個li元素的img標籤的src屬性值設定為demo/jQuery/img/star1.png,也就是預設的灰色。
(9).var index = $(this).index(),獲取當前點選li元素的索引值。
(10).if (index < 2) {
for (var j = 0; j <= index; j++) {
aLi.eq(j).find('img').attr('src', 'demo/jQuery/img/star2.png');
s1 = arr[index];
arr2[j] = aLi.eq(j).find('img').attr('src');
}
} else {
for (var j = 0; j <= index; j++) {
aLi.eq(j).find('img').attr('src', 'demo/jQuery/img/star3.png');
s1 = arr[index];
arr2[j] = aLi.eq(j).find('img').attr('src');
}
}
當點選的星星是前兩的時候,就將當前星星和之前的星星變換成黑色。
並且將對應索引的評語賦值給變數s1.
然後將黑色星星的圖示路徑存入對應索引的arr2陣列,這也就是為什麼點選之後能夠保留星級評分效果的功能。
(11).for (var k = index + 1; k < leng; k++) {
arr2[k] = 'demo/jQuery/img/star1.png';
},將arr2陣列對應索引的圖示路徑設定為灰色。
(12).$('.s1').text(s1),顯示檔次評語。
(13).aLi.hover(function () {},function(){}),規定滑鼠滑入和滑出的要執行的函式。
(14).for (var j = 0; j < leng; j++) {
aLi.eq(j).find('img').attr('src', 'demo/jQuery/img/star1.png');
},先將所有星星重置為灰色。
(15).var index = $(this).index(),獲取當前滑鼠懸浮的星星的索引值。
(16).var index = $(this).index();
if (index < 2) {
for (var j = 0; j <= index; j++) {
aLi.eq(j).find('img').attr('src', 'demo/jQuery/img/star2.png');
$('.s1').text(arr[index]);
}
} else {
for (var j = 0; j <= index; j++) {
aLi.eq(j).find('img').attr('src', 'demo/jQuery/img/star3.png');
$('.s1').text(arr[index]);
}
}原理在上面已經有介紹。
(17).for (var index = 0; index < leng; index++) {
aLi.eq(index).find('img').attr('src', arr2[index]);
}
$('.s1').text(s1);
當滑鼠滑出之後,就將arr2陣列的圖示路徑依次賦值給各個圖片。
這也就是點選星星之後,滑鼠離開能夠儲存評級狀態的原因。
二.相關閱讀:
(1).eq()可以參閱jQuery eq()方法一章節。
(2).find()可以參閱jQuery find()方法一章節。
(3).attr()可以參閱jQuery attr()方法一章節。
(4).index()可以參閱jQuery index()方法一章節。
(5).hover()可以參閱jQuery hover事件一章節。
相關文章
- 滑鼠劃過星級評分效果詳解
- jQuery+PHP實現購物商城常用的星級評分效果jQueryPHP
- jQuery彈幕效果詳解jQuery
- jQuery 放大鏡效果詳解jQuery
- jQuery-五角星評分案例jQuery
- 基於SVG的jQuery星級評分外掛-jRateSVGjQuery
- jQuery表單驗證效果詳解jQuery
- jQuery滑鼠懸浮翻牌效果詳解jQuery
- jQuery滑鼠懸浮聚焦效果詳解jQuery
- jQuery實進度條效果詳解jQuery
- jQuery表格隔行變色效果詳解jQuery
- jQuery 倒數計時效果詳解jQuery
- jQuery 圖片垂直切換效果詳解jQuery
- Qml 實現星級評分元件 已釋出元件
- JavaScript省市級聯效果詳解JavaScript
- Flutter星級評選Flutter
- 三種方式使用純 CSS 實現星級評分CSS
- CSS3五角星效果詳解CSSS3
- 年月日級聯效果詳解
- JavaScript數字分頁效果詳解JavaScript
- jQuery三級導航選單詳解jQuery
- Flutter | 擼一個高大上的星級評分控制元件Flutter控制元件
- 星級評價的實現
- jquery星級評分外掛(支援各種回撥函式、自定義配置、只讀模式、最大星級等)jQuery函式模式
- VUE實現評分效果和不同型別分數展示效果元件Vue型別元件
- jQuery 效果方法jQuery
- jQuery 緩衝效果二級導航下拉選單jQuery
- jQuery 的語法詳解jQuery
- jQuery字串擷取詳解jQuery字串
- 微信小程式實現星星評分效果微信小程式
- jQuery基礎 效果jQuery
- jQuery 放大鏡效果jQuery
- jQuery 效果 – 動畫jQuery動畫
- jQuery 效果 – 滑動jQuery
- 推薦一款JQ星級評分外掛
- jQuery模擬打字機詳解jQuery
- jquery.ajaxSetup()函式詳解jQuery函式
- JavaScript 打字機效果詳解JavaScript