Reputation: 57
after starting to learn some coding I did this (very ugly, non DRY) star rating switch with bootstrap in a rails4 app. I already did the codeschoool coffeescript tutorial, but it seems ruby is a little easier to learn for me.
If someone would help with a little hint on how a "pro" would write this function? Thank you so much.
@starSwitch = ->
label_1 = $("label#1")
label_2 = $("label#2")
label_3 = $("label#3")
label_4 = $("label#4")
label_5 = $("label#5")
label_1.click ->
label_1.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_2.children("i").addClass("icon-star-empty").removeClass("icon-star colorfull")
label_3.children("i").addClass("icon-star-empty").removeClass("icon-star colorfull")
label_4.children("i").addClass("icon-star-empty").removeClass("icon-star colorfull")
label_5.children("i").addClass("icon-star-empty").removeClass("icon-star colorfull")
label_2.click ->
label_1.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_2.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_3.children("i").addClass("icon-star-empty").removeClass("icon-star colorfull")
label_4.children("i").addClass("icon-star-empty").removeClass("icon-star colorfull")
label_5.children("i").addClass("icon-star-empty").removeClass("icon-star colorfull")
label_3.click ->
label_1.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_2.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_3.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_4.children("i").addClass("icon-star-empty").removeClass("icon-star colorfull")
label_5.children("i").addClass("icon-star-empty").removeClass("icon-star colorfull")
label_4.click ->
label_1.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_2.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_3.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_4.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_5.children("i").addClass("icon-star-empty").removeClass("icon-star colorfull")
label_5.click ->
label_1.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_2.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_3.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_4.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
label_5.children("i").addClass("icon-star colorfull").removeClass("icon-star-empty")
$ -> starSwitch
Upvotes: 0
Views: 164
Reputation: 4880
You could do something like:
@starSwitch = ->
$("label").click ->
$("label").addClass("icon-star colorfull").removeClass("icon-star-empty")
$(this).nextAll("label").addClass("icon-star-empty").removeClass("icon-star colorfull")
If you have other labels on the page then add a class to your star labels (for example stars
), and then change the code to $("label.stars").click
and nextAll("label.stars")
.
Upvotes: 3