1

RailsのアプリにCoffeeScriptを使用していますが、チェックボックスが変更された後、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>

コーヒースクリプト:

$(".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()を使ってみましたが、うまくいきませんでした。どんな助けでも本当に感謝しています。ありがとう。

4

1 に答える 1

3

this成功のコールバック内は、あなたが思っているものではありません。

すべてのコールバック内の this 参照は、設定で $.ajax に渡されるコンテキスト オプションのオブジェクトです。コンテキストが指定されていない場合、これは Ajax 設定自体への参照です。

使用する

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

$.ajax他にもたくさんのオプションがありますhttp://api.jquery.com/jQuery.ajax/

于 2013-03-15T17:15:26.337 に答える