動作するからいいでしょうと放置されがちな、jQueryのバージョンアップを行っています。
単に新しいバージョンにすれば、問題なく動作すると思っていると、意外に動作しなくて悩まされました。
以下、どんなことで悩まされたかを書いていきます。
attrメソッドが使われていて動作しない
チェックボックスのチェックを外すために、jQueryが使われていて、jQueryのバージョンアップをしたら、動作しなくなりました。
ソースコードを見て、少し悩んで、
attr("checked", false)
となっていたのを、
prop("checked", false)
に修正したら、動作するようになりました。
まだattrメソッドで動作する時代の、古いjQueryが使われているとは思っていませんでした。
Photo by Joshua Aragon on Unsplash
checkedメソッドがない
ラジオボタンが選択されているかのチェックのために、jQueryが使われていて、jQueryのバージョンアップと共に、不要と思われるJavaScriptファイルを削除したら、動作しなくなりました。
if ($("#form [name=setting]").checked()) {
の部分でエラーが発生しています。
ブラウザのデバッガーで見ると、checkedメソッドが存在しないと表示しています。
どういうことだ?と思って、不要と思われるJavaScriptファイルを見てみると、
jQuery.fn.checked = function(){ return jQuery(this).is(':checked'); }
と書かれています。
不要と思われるJavaScriptファイルが実は必要でした。
JavaScriptファイルを削除したかったので、該当箇所を、
if ($("#form [name=setting]").is(':checked')) {
に修正したら、動作するようになりました。
JavaScriptファイルで、メソッドを分かりやすくしようという意図でメソッドが用意してあるとは思っていませんでした。