2016-10-25 13 views
0

ボタンをリスト内に作成しようとしていますが、もう一度クリックするとラインスルが取り消されます。私は.toggle()を試みたが、それはうまくいきませんでした:ボタンをクリックして何かを行い、同じボタンをクリックして元に戻します。

元のコード:

$("div").on("click", ".doneButt", function(e) { 
    e.preventDefault(); 
    $(this).parents("li").css("text-decoration", "line-through"); 
}); 

.toggleの試み:

$(".doneButt").toggle(function() { 
    $(this).parents("li").css("text-decoration", "line-through"); 
}, function() { 
    $(this).parents("li").css("text-decoration", "none"); 
}); 
+3

このスタイルのクラスを追加または削除できます。 '.toggleClass()'を使用してください – guradio

+1

jQuery v1.9では、['.toggle()'イベントメソッド](http://api.jquery.com/toggle-event/)が削除されました。代わりに '.click()'ハンドラを使い、 '.toggleClass()'や 'if/else'文を持つクラスを使います。 – nnnnnn

答えて

5

$(".doneButt").click(function() { 
 
    $(this).parents("li").toggleClass('withline'); 
 
});
.withline { 
 
    text-decoration: line-through 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<ul> 
 
    <li>asdasdasda 
 
    <input type='button' class='doneButt' value='Click' /> 
 
    </li> 
 
</ul>

  1. 使用方法.toggleClass()
+1

これは完璧な答えです –

+0

ありがとうございます。 – OrangePineapple

+0

@OrangePineappleは仲間を助けてうれしい – guradio

0
$(".doneButt").on("click",function() { 
     var style = $(this).attr("style")+""; 
     if(style=="undefined") 
      $(this).parents("li").css("text-decoration", "line-through"); 
     else 
      $(this).parents("li").removeAttr("style"); 
     }); 
+1

'スタイル'を削除すると、望ましくない効果が生じる可能性があります。 – nnnnnn

+0

スタイルを追加したり削除したりしても意味がありません。元に戻すとは、スタイル属性を削除することです。 – Araz

+0

要素に 'text-decoration'とは関係のない他のスタイルプロパティがあるとどうなりますか?このコードはこれらのプロパティも削除します。 – nnnnnn

関連する問題