为jquery滑块添加一个事件处理程序到coffeescript类

时间:2013-01-08 11:10:43

标签: javascript jquery coffeescript

我是一个coffeescript newbee想要在一个客户端视图上使用多个jquery滑块。我想将幻灯片事件用于多个功能。滑块显示,该值显示在开始时,滑块可用,但不使用该事件。

class Slider  
 constructor: (@min, @max, @value, @id) ->
   d3.select(@id).attr("style", "width: 500px; margin: 15px;")
   @myslider = $(@id).slider
     min: @min
     max: @max
     value: @value
   $(@id).bind
  slide: @slideme

 slideme: (event, ui) =>
   $(@id +"_data").val(@value)

$(document).ready ->
  slider1 = new Slider(0,800,100,'#testslider')
  $("#testslider_data").val($("#testslider").slider("value"))

使用滑块时,我需要做什么才能获得html中显示的幻灯片的值?

1 个答案:

答案 0 :(得分:0)

你的缩进是关闭的。这样:

 $(@id).bind
slide: @slideme

应该是这样的:

$(@id).bind
  slide: @slideme

或:

$(@id).bind slide: @slideme

或我个人最喜欢的:

$(@id).bind(slide: @slideme)

CoffeeScript对空白和格式非常敏感,您的格式定义了代码的大部分结构,因此必须要小心和一致;你正在为缩进混合一个和两个空格,这只会造成麻烦。

您的原始代码:

constructor: (@min, @max, @value, @id) ->
  #...
  $(@id).bind
 slide: @slideme

将会是这样的:

constructor: (@min, @max, @value, @id) ->
  #...
  $(@id).bind

slide: @slideme

因此,用于slide: @slideme的{​​{1}}参数看起来像是该类的另一个属性,它将最终作为此JavaScript:

bind

将代码粘贴到coffeescript.org TRY COFFEESCRIPT 面板中,您将看到它对您的CoffeeScript意味着什么。