首頁 >web前端 >js教程 >與jQuery的星級控制

與jQuery的星級控制

William Shakespeare
William Shakespeare原創
2025-03-10 01:00:14642瀏覽

與jQuery的星級控制

鑰匙要點

  • >本文提供了有關如何使用jQuery構建交互式星級窗口小部件的詳細指南。它涉及創建一個被星圖替換的廣播按鈕組,用戶可以與之進行交互以提供評級。
  • >
  • 星級評級系統設計為可訪問鍵盤,並允許半明星評分。這是通過使用CSS Sprite圖像並操縱背景位置屬性來顯示恆星的不同狀態來實現的。
  • >評級系統旨在通過將量表限制在四星星而不是五個恆星中來鼓勵用戶參與度和周到的評級選擇,從而消除了中間選項。它還允許半明星的評分以提高精度。
  • >
  • >系統使用jQuery處理用戶交互,包括懸停和單擊星星。單擊恆星時,更新了相應的單選按鈕值,並且突出顯示了恆星和所有前面的星星。該系統還實現了錯誤處理以管理潛在問題。

>我們新發行的書《 jQuery:新手嗎?作為品嚐者,這是Craig Sharkie向我們展示如何使用JQuery構建一個強大,精緻的星級窗口小部件的摘錄。它是可訪問的,並且可以進行半明星的評分。

如果您以前從未使用過jQuery,請獲取免費的pdf樣品PDF並加快第2章的介紹。第7章(第7章,從中獲取本文,也將在下載中都包含在此文章中,因此,如果您寧願在線繪製這段文章,請在本文中讀取庫,以便您可以在線繪製量表,以便您可以欣賞庫來欣賞> 星級評級控制

我們的客戶希望增加用戶參與度,並幫助他的用戶感到重要。我們已經考慮了一下,並向他拋棄了一個明星的評級主意 - 所有人都喜歡通過分配金星來表達自己的感受。我們閃亮的新控制將如圖1所示,“星級評級控制”。

圖1.星級額定控制

與jQuery的星級控制>我們的星級評級控制的基礎是一個無線電按鈕組;這是完美的,因為瀏覽器會從組中執行單個選擇。您可以選擇要選擇的範圍,只需添加正確的按鈕數:<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>
對於星星,我們將依靠CSS Sprites。 This way our control will only be reliant on a single image (shown in Figure 2, “Star CSS sprite image”), which saves on HTTP requests and makes it easier for our graphic designers to edit.

Figure 2. Star CSS sprite image

Our CSS will apply the CSS sprite image to the links we create that represent half-stars.要在不同的圖像狀態之間移動,我們只需要更新背景位置屬性:與jQuery的星級控制
示例2.章節_07/11_star_ratings/stars.css(efcerpt)

>

.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    });  }}

>> >創建方法通過每個容器通過我們通過的鏈接匹配的每個容器,並創建鏈接的列表,並創建prots a proce a proce a proce the Protexy的鏈接。這些鏈接是我們將看起來像星星的樣式。它還將隱藏原始表單元素,因此用戶只看到我們可愛的星星:示例4.章節_07/11_star_ratings/script.js(efcerpt)>
<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方法 - 這是我們將附加工作所需的事件的地方。然後,我們將其附加到列表容器中。在容器中後,我們查看是否選擇了當前的廣播按鈕(我們使用:檢查表單過濾器)。如果已進行了檢查,我們希望將評分課程添加到此半明星和之前的所有半明星中。將分配與所附評級類的任何鏈接,都將分配金星映像(這將使用戶能夠看到當前的評分)。

選擇我們需要旋轉黃金的所有元素,我們將獲得一些新的jQuery操作的幫助:provall and selff。 PROVALL操作在當前選擇之前選擇 (與Prev Action不同,僅選擇前一個同級)。就我們的示例而言,我們希望將類添加到上一個兄弟姐妹當前選擇中。為此,我們應用和自行的動作,該操作僅包括當前選擇中的原始選擇。現在,我們擁有所有將是黃金的鏈接,因此我們可以添加類。 提示:其他遍歷方法您可能已經猜到,與Profall一起,JQuery為我們提供了一種NextAll方法,該方法抓住了在同一容器中發生的所有元素。 jQuery 1.4還引入了兩種新的伴侶方法:provuntil和nextuntil。這些被選中調用,並將掃描元素的兄弟姐妹(前向或向後,具體取決於您使用的一個),直到它們擊中與選擇器相匹配的元素。

,例如,例如$('h2:first')。 nextununtil('h2'); 將為您提供坐在頁面上的第一個H2和同一容器元素中的以下H2之間的所有元素。 >如果將第二個參數傳遞給Provuntil或NextUntil,則將用作選擇器來過濾返回的元素。因此,例如,如果我們寫了Nextuntil('H2','div'),則只會返回我們當前選擇和下一個H2之間的div元素。

完成所有這些艱苦的工作後,我們現在可以添加到控件的新鏈接列表,並擺脫原始按鈕。現在,用戶將僅與星星進行交互:

示例5。 chapter_07/11_star_ratings/script.js(摘錄)

<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>

>該控件看起來像現在正在形狀,但是它還沒有任何作用。我們需要附加一些活動處理程序並添加一些行為。 我們對三個活動感興趣。當用戶懸停在星星上時,我們想更新CSS Sprite以顯示懸停狀態;當他們離開時,我們想將CSS精靈恢復到其原始狀態。 and when they click, we want to make the selection gold:

.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)

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頁的更多出色學習材料。如果您已經賣出了

經常詢問有關jQuery Star評級的問題(常見問題解答)
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    });  }}
>如何自定義恆星等級的外觀?

>可以通過修改CSS來自定義恆星等級的外觀。您可以更改星星的顏色,大小和間距。例如,要更改顏色,您可以在CSS中使用“顏色”屬性。要更改尺寸,您可以調整“字體大小”屬性。請記住針對CSS中星級評級的特定類別以應用這些更改。

>我可以在jQuery Star評分中使用半明星評分嗎?這可以通過將“一半”選項設置為初始化恆星評級時實現。這允許更精確的評分,使用戶能夠使用半星級對等級進行評分。

>

>如何保存用戶的評分?

>

可以保存用戶的評分,您可以使用AJAX將評分值發送到服務器端腳本。然後,該腳本可以將評分存儲在數據庫中。加載頁面時,腳本可以檢索存儲的額定值並顯示它。

>

>如何顯示平均額定值?

>顯示平均額定值可以通過計算所有存儲的額定值的平均值,然後將星級額定值設置為平均值來完成。這可以使用服務器端腳本來完成,該腳本從數據庫中檢索所有評分,計算平均值,然後將此平均值發送回客戶端腳本。

>

>我可以禁用星級評分嗎?如果您想顯示評級,但不希望用戶能夠更改它,這可能很有用。為了禁用星級評分,您可以在初始化星級評分時將“ ReadOnly”選項設置為true。

>

>我如何使用不同的星圖標?

您可以通過更改“ 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 Star等級中的錯誤?

>

處理jQuery Star等級中的錯誤可以使用“錯誤”事件完成。當星級額定值中存在錯誤時,例如設置無效的值時,會觸發此事件。您可以收聽此事件,然後以適合您的應用程序的方式處理錯誤。

>

以上是與jQuery的星級控制的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn