2012-02-29 3 views
8

Mam następujący kod forma:danych w jQuery/Coffee skryptu

<input data-color="orange" id="vote_color_id_2" name="color" type="radio" value="2" />Orange 
<input data-color="blue" id="vote_color_id_3" name="color" type="radio" value="3" />Blue 
<input data-color="green" id="vote_color_id_4" name="color" type="radio" value="4" />Green 

Używam coffeescript w szynach i teraz jestem po prostu próbuje ostrzec wartość atrybutu dane data-color.

To mój coffeescript

jQuery -> 
    $("input[name='color']").change -> 
     color = this.data() 
     alert color.color 

Skompilowany jQuery wygląda następująco:

(function() { 

    jQuery(function() { 
    return $("input[name='color']").change(function() { 
     var color; 
     color = this.data(); 
     return alert(color.color); 
    }); 
    }); 

}).call(this); 

ale wciąż otrzymuję ten błąd?

Uncaught TypeError: Object #<HTMLInputElement> has no method 'data' 

Odpowiedz

24
jQuery -> 
    $("input[name='color']").change -> 
     color = $(this).data() 
     alert color.color 

jQuery przypisuje this do elementu, który wywołał zwrotnego, ale jego nigdy obiekt jQuery. Więc musisz go zawinąć, jeśli chcesz wywołać na nim metody jQuery.