前提・実現したいこと
update.js.erbファイルでクリックイベントを用いてクラスの入れ替えをしたい。
発生している問題・エラーメッセージ
update.js.erbのクリックイベントが1回目のクリックでは発火されず、2回目以降でしか発火されない。
該当のソースコード
【index.slim.rb】
slim
1td 2 #target-text.badge class="#{@user.has_filed ? 'success' : 'default'}" 3 4= link_to user_path, remote: true, method: :patch do 5 .btn#target-btn 6 | 変更
【users_controller.rb】
ruby
1 def update 2 @user.update_attributes(has_filed: !@user.has_filed) 3 end
【update.js.erb】
javascript
1$('#target-btn').click(function() { 2 console.log("クリック発火") 3 4 if ($('#target-text').hasClass('default')) { 5 $('#target-text').removeClass('default') 6 $('#target-text').addClass('success') 7 $('#target-text').html('有効') 8 } else { 9 $('#target-text').removeClass('success') 10 $('#target-text').addClass('default') 11 $('#target-text').html('無効') 12 } 13})
コンソールで確認してみましたが、2回目以降のクリックでしか、『クリック発火』は表示されていませんでした。
試したこと
https://teratail.com/questions/236407
↑の過去記事を参考に、
【update.js.erb】
javascript
1$('#target-btn').on('ajax:success', function() { 2 console.log("クリック発火") 3}
としてみましたが結果は変わりませんでした。
update.js.erbでは他のコードでdefault、successクラスを使用する記載があるので、影響しないように、クリックイベントで括りたいです。
他にも、少し闇雲ではありますが
【update.js.erb】
javascript
1$('#target-btn').on('click', function() { 2 console.log("クリック発火") 3}
や
【update.js.erb】
javascript
1$('#target-btn').one('click', function() { 2 console.log("クリック発火") 3}
等記載を変更してみましたが、結果は変わりませんでした。
そもそもjs.erbファイル内でクリックイベントを待ち受けているのが良くない等ありましたら、ご指摘いただければと存じます。
大変恐縮ではございますが、対処法をご教示いただけましたら幸いでございます。。
あなたの回答
tips
プレビュー