>我們新發行的書《 jQuery:新手嗎?作為品嚐者,這是Craig Sharkie向我們展示如何使用JQuery構建一個強大,精緻的星級窗口小部件的摘錄。它是可訪問的,並且可以進行半明星的評分。
如果您以前從未使用過jQuery,請獲取免費的pdf樣品PDF並加快第2章的介紹。第7章(第7章,從中獲取本文,也將在下載中都包含在此文章中,因此,如果您寧願在線繪製這段文章,請在本文中讀取庫,以便您可以在線繪製量表,以便您可以欣賞庫來欣賞> 星級評級控制我們的客戶希望增加用戶參與度,並幫助他的用戶感到重要。我們已經考慮了一下,並向他拋棄了一個明星的評級主意 - 所有人都喜歡通過分配金星來表達自己的感受。我們閃亮的新控制將如圖1所示,“星級評級控制”。圖1.星級額定控制
>
.stars div a { background: transparent url(sprite_rate.png) 0 0 no-repeat; display: inline-block; height: 23px; width: 12px; text-indent: -999em; overflow: hidden;}.stars a.rating-right { background-position: 0 -23px; padding-right: 6px;}.stars a.rating-over { background-position: 0 -46px; }.stars a.rating-over.rating-right { background-position: 0 -69px; }.stars a.rating { background-position: 0 -92px; }.stars a.rating.rating-right { background-position: 0 -115px; }
>我們決定使用戶選擇四個星星的額定值,而不是四星級。為什麼?用戶心理學!為一個人提供一條中間道路,他們會接受;通過沒有中間,我們使用戶對他們的選擇有更多的思考。我們取得了更好的結果,並且我們將能夠更好地向用戶提供最佳內容(由他們選擇)!
,但是四個是有限的規模,這就是為什麼我們希望獲得半明星評分的原因。這是通過光學幻覺實現的 - 您可能注意到我們的恆星圖像被切成兩半。我們的HTML將包含八個無線電按鈕,每個按鈕都值得半星。 代碼有兩個部分將我們的八個無線電按鈕轉換為四星星。首先,creatsestars功能將帶有一個帶有無線電按鈕的容器,並將其替換為星鏈接。 然後,每個恆星都會為適當的事件處理程序(在附加器方法中)補充,以使用戶與控件進行交互。這是我們星級對象的骨架:
示例3。 chapter_07/11_star_ratings/script.js(excerpt)
var starRating = { create: function(selector) { $(selector).each(function() { // Hide radio buttons and add star links }); }, addHandlers: function(item) { $(item).click(function(e) { // Handle star click }) .hover(function() { // Handle star hover over },function() { // Handle star hover out }); }}
<div > <label><input name="rating" type="radio" value="1"/>1 Star</label> <label><input name="rating" type="radio" value="2"/>2 Stars</label> <label><input name="rating" type="radio" value="3"/>3 Stars</label> <label><input name="rating" type="radio" value="4"/>4 Stars</label> ⋮</div>
我們首先創建一個新鏈接的容器(DIV元素);我們將為要替換的每個廣播按鈕創建一個新鏈接。在使用:無線電選擇器過濾器中選擇所有無線電按鈕之後,我們將每個項目的評分進行使用,並使用它來創建超鏈接元素。
注意:用於AddClass操作的Modulus條件分配,我們正在使用基於數學的ternary operator進行條件指定類名稱。正如我們在書中之前所做的那樣,我們正在使用模量(%)操作員來確定索引是偶數還是奇怪。如果索引很奇怪,我們將添加評級權類;這使得鏈接看起來像星星的右側。
>一旦我們的鏈接準備就緒,我們將其傳遞給Addhandlers方法 - 這是我們將附加工作所需的事件的地方。然後,我們將其附加到列表容器中。在容器中後,我們查看是否選擇了當前的廣播按鈕(我們使用:檢查表單過濾器)。如果已進行了檢查,我們希望將評分課程添加到此半明星和之前的所有半明星中。將分配與所附評級類的任何鏈接,都將分配金星映像(這將使用戶能夠看到當前的評分)。
,例如,例如$('h2:first')。 nextununtil('h2'); 將為您提供坐在頁面上的第一個H2和同一容器元素中的以下H2之間的所有元素。 >如果將第二個參數傳遞給Provuntil或NextUntil,則將用作選擇器來過濾返回的元素。因此,例如,如果我們寫了Nextuntil('H2','div'),則只會返回我們當前選擇和下一個H2之間的div元素。 完成所有這些艱苦的工作後,我們現在可以添加到控件的新鏈接列表,並擺脫原始按鈕。現在,用戶將僅與星星進行交互: 示例5。 chapter_07/11_star_ratings/script.js(摘錄) >該控件看起來像現在正在形狀,但是它還沒有任何作用。我們需要附加一些活動處理程序並添加一些行為。 我們對三個活動感興趣。當用戶懸停在星星上時,我們想更新CSS Sprite以顯示懸停狀態;當他們離開時,我們想將CSS精靈恢復到其原始狀態。 and when they click, we want to make the selection gold: The hover function is the easiest: when hovering over, we select all of the half-stars before—including the current half-star—and give them the rating-over class using prevAll and andSelf, just like we did in設置。徘徊時,我們覆蓋基地,並從所有鏈接中刪除評分級別。 這是懸停的。我們通過使用以下方式選擇正確的廣播按鈕來做到這一點,該按鈕可以搜索其值與當前鏈接的文本相匹配的無線電按鈕。 隨著模型更新,我們可以返回與CSS Sprites一起返回。首先,我們從當前具有該鏈接的任何鏈接中清除評級類,然後將其添加到用戶選擇的鏈接上的所有鏈接中。最後的觸摸是取消鏈接的默認操作,因此單擊“星星”不會導致其發射位置的變化。請記住要獲取免費的樣本PDF,其中包含此示例以及價值150頁的更多出色學習材料。如果您已經賣出了
>可以通過修改CSS來自定義恆星等級的外觀。您可以更改星星的顏色,大小和間距。例如,要更改顏色,您可以在CSS中使用“顏色”屬性。要更改尺寸,您可以調整“字體大小”屬性。請記住針對CSS中星級評級的特定類別以應用這些更改。 >如何保存用戶的評分? >如何顯示平均額定值? >我可以禁用星級評分嗎?如果您想顯示評級,但不希望用戶能夠更改它,這可能很有用。為了禁用星級評分,您可以在初始化星級評分時將“ ReadOnly”選項設置為true。 我如何重置星星等級? >如何處理jQuery Star等級中的錯誤? 處理jQuery Star等級中的錯誤可以使用“錯誤”事件完成。當星級額定值中存在錯誤時,例如設置無效的值時,會觸發此事件。您可以收聽此事件,然後以適合您的應用程序的方式處理錯誤。 <div > <label><input name="rating" type="radio" value="1"/>1 Star</label> <label><input name="rating" type="radio" value="2"/>2 Stars</label> <label><input name="rating" type="radio" value="3"/>3 Stars</label> <label><input name="rating" type="radio" value="4"/>4 Stars</label> ⋮</div>
.stars div a { background: transparent url(sprite_rate.png) 0 0 no-repeat; display: inline-block; height: 23px; width: 12px; text-indent: -999em; overflow: hidden;}.stars a.rating-right { background-position: 0 -23px; padding-right: 6px;}.stars a.rating-over { background-position: 0 -46px; }.stars a.rating-over.rating-right { background-position: 0 -69px; }.stars a.rating { background-position: 0 -92px; }.stars a.rating.rating-right { background-position: 0 -115px; }
Example 6. chapter_07/11_star_ratings/script.js (excerpt)
var starRating = { create: function(selector) { $(selector).each(function() { // Hide radio buttons and add star links }); }, addHandlers: function(item) { $(item).click(function(e) { // Handle star click }) .hover(function() { // Handle star hover over },function() { // Handle star hover out }); }}
>如何自定義恆星等級的外觀? >我可以在jQuery Star評分中使用半明星評分嗎?這可以通過將“一半”選項設置為初始化恆星評級時實現。這允許更精確的評分,使用戶能夠使用半星級對等級進行評分。
>可以保存用戶的評分,您可以使用AJAX將評分值發送到服務器端腳本。然後,該腳本可以將評分存儲在數據庫中。加載頁面時,腳本可以檢索存儲的額定值並顯示它。
>>顯示平均額定值可以通過計算所有存儲的額定值的平均值,然後將星級額定值設置為平均值來完成。這可以使用服務器端腳本來完成,該腳本從數據庫中檢索所有評分,計算平均值,然後將此平均值發送回客戶端腳本。
>>我如何使用不同的星圖標?
您可以通過更改“ staroff”和“ staroff”和“ staron”選項來使用“ staroff”和“ staron”選項。這些選項接受您要使用的圖標的名稱。這些圖標應該是您項目中包含的字體圖標集的一部分。 我可以使用jQuery Star等級而無需jQuery? jQuery Star等級是一個jQuery插件,因此它需要jQuery才能運行。如果您想在沒有jQuery的情況下使用星級評級,則需要找到其他解決方案,例如純JavaScript星級評級庫。
您可以通過將其值設置為0來重置恆星評級。可以使用“等級”的“等級”方法來完成star ratis ratis rating ratis rating rating ratis rating rating rating rating ratis。例如,如果您的星級評分實例存儲在名為“評分”的變量中,則可以使用“評分(0)”將其重置。星級評級可以鏈接到形式中隱藏的輸入字段。當用戶提交表單時,恆星等級的值將包含在表單數據中。
>>
以上是與jQuery的星級控制的詳細內容。更多資訊請關注PHP中文網其他相關文章!