我正在使用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()但没有运气。任何帮助将非常感激。感谢。
答案 0 :(得分:3)
this
不是你想象的那样。
所有回调中的this引用是在设置中传递给$ .ajax的context选项中的对象;如果未指定context,则这是对Ajax设置本身的引用。
使用
$.ajax
context: this,
url: "/update"
type: "post"
data: { id }
//.....
$.ajax
还有很多其他选项http://api.jquery.com/jQuery.ajax/