CoffeeScript:选中复选框后LI上的换行符

时间:2013-03-15 17:13:05

标签: jquery html coffeescript

我正在使用CoffeeScript作为Rails上的应用程序,现在在复选框被更改之后我调用了一个jquery函数来使用ajax在数据库上更新它的值,但我还想在复选框中放一行被选中。

HTML:

    <ul>
       <li class="side-bar-element">
           <input class="task" id="1" name="1" type="checkbox" value="Element 1"/>
           Element 1
       </li>
       <li class="side-bar-element">
           <input class="task" id="2" name="2" type="checkbox" value="Element 2"/>
           Element 2
       </li> 
       <li class="side-bar-element">
           <input class="task" id="3" name="3" type="checkbox" value="Element 3"/>
           Element 3
       </li> 
       <li class="side-bar-element">
           <input class="task" id="4" name="4" type="checkbox" value="Element 4"/>
           Element 4
       </li>  
    </ul>

CoffeeScript的:

$(".task").live "change", ->
  id = $(this).attr("id")
  isChecked = $(this).attr("checked")
  $.ajax
    url: "/update"
    type: "post"
    data: { id }

    success: ->
      alert "Updated Succesfully."
      if(isChecked)
        alert "For Testing: Is Checked."
        $(this).closest('li').css "text-decoration", "line-through"

    error: ->
      alert "Changes were not saved."

我不明白为什么警报“Is Checked”工作正常,但它永远不会更新CSS。我也尝试使用parent(),prev()但没有运气。任何帮助将非常感激。感谢。

1 个答案:

答案 0 :(得分:3)

成功回调中的

this不是你想象的那样。

  

所有回调中的this引用是在设置中传递给$ .ajax的context选项中的对象;如果未指定context,则这是对Ajax设置本身的引用。

使用

$.ajax
    context: this,
    url: "/update"
    type: "post"
    data: { id }
    //.....

$.ajax还有很多其他选项http://api.jquery.com/jQuery.ajax/