<style type="text/css">
.l_circle{
height: 10px;
width: 10px;
margin: 5px;
display: inline-block;
border-radius: 6px;
-moz-border-radius:6px;
-webkit-border-radius:6px;
}
.black{
border: 1px black solid;
background-color: black;
height: 12px;
width: 12px;
border-radius: 7px;
-moz-border-radius:7px;
-webkit-border-radius:7px;
}
.white{
border:1px gray solid;
background-color: white;
}
.gray{
border:1px gray solid;
background-color: gray;
}
</style>
<div data-bind="starRating: points"></div>
<button data-bind="click:addPoint">Next</button>
$(function(){
ko.bindingHandlers.starRating = {
init: function(element, valueAccessor) {
//$(element).addClass("");
var array = valueAccessor();
//alert(array()[0]);
for (var i = 0; i < array()[1]; i++)
$("<span>").addClass('l_circle').appendTo(element);
// Handle mouse events on the stars
$("span", element).each(function(index) {
});
},
update: function(element, valueAccessor) {
// Give the first x stars the "chosen" class, where x <= rating
var array = valueAccessor();
$("span", element).each(function(index) {
$(this).toggleClass("gray", index < array()[0]);
$(this).toggleClass("white", index > array()[0]);
$(this).toggleClass("black", index == array()[0]);
});
}
};
function WebmailViewModel() {
self.points = ko.observableArray();
self.points([10,30]);
self.addPoint = function(){
var _array = self.points();
_array[0]++;
self.points(_array);
}
}
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="knockout-3.0.0.js"></script>
效果图:
