railsでメモアプリを制作しようと思っています。
each文を使用してリスト表記したオブジェクトをjQueryで見出しを開く、閉じるといった機能を実装したいと考えています。
以下、ビューのhamlファイルです。
.list .list--title My tips一覧 .list--box .list__a-tips - @memo.each do |memo| .list__a-tips__block.a-memo .list__a-tips__block--title #{memo.title} .list__a-tips__block--body.blind.switchin = simple_format(memo.body) .list__a-tips__block--url.blind.switchin .list__a-tips__block--url--left 参考サイト .list__a-tips__block--url--right .list__a-tips__block--url--right--link =link_to "#{memo.link}","#{memo.link}" .list__a-tips__block--menu.blind.switchin .list__a-tips__block--menu--date #{memo.created_at} .list__a-tips__block--menu--edit =link_to"編集",edit_memo_path(memo.id) .list__a-tips__block--menu--delete =link_to"削除",memo_path(memo.id),method: :delete %button.list__a-tips__block--open.opens.switchout =icon('fa','chevron-down') %button.list__a-tips__block--close.closes.blind.switchin =icon('fa','chevron-up')
以下、scssファイルです
.list{ background-color: #778899; width: calc(100% - 210px); &--title{ text-align: center; font-size: 40px; } &--box{ background-color:green; height:520px; overflow: scroll; } &__a-tips{ background-color: green; width: 1000px; margin: 20px 50px; border-width: 2px; border-color: black; text-align: center; margin-bottom: 10px; .blind{ display: none; } .show{ display:block; } &__block{ background-color: white; margin-bottom: 20px; border-bottom: solid; border-style: solid; &--title{ font-size: 18px; border-bottom: solid; } &--body{ border-bottom: solid; min-height:100px ; max-height: 350px; text-align: left; overflow: scroll; } &--url{display: flex; text-align: center; height: 30px; font-size: 15px; &--left{ border-bottom: solid; border-right: solid; width: 300px; } &--right{ width: 700px; border-bottom: solid; overflow: scroll; &--link{ width: 650px; margin: 0 25px; max-height: 30px; text-overflow: ellipsis; } } } &--menu{ display: flex; text-align: center; border-bottom: solid; &--date{ width: 600px; border-right: solid; } &--edit{ width: 200px; border-right: solid; } &--delete{ width: 200px; } } &--open{ font-size:15px; height: 20px; line-height: 20px; border: none; } &--close{ font-size:15px; height: 20px; line-height: 20px; border: none; } } } }
![]
最初はこのように格納されていますが下の矢印をクリックすると
このように見出しを開く感じです。
jsファイルを以下のように設定したところ、矢印を押すとすべての見出しが開く、閉じる様になりました。
$(function(){ let opens=$(".opens") let closes=$(".closes") function tipsopen(){ $(".switchin").removeClass("blind") $(".switchout").addClass("blind") } function tipsclose(){ $(".switchout").removeClass("blind") $(".switchin").addClass("blind") } opens.click(tipsopen) closes.click(tipsclose) })
矢印をクリックするとそのメモの内容部分だけ表示するようにするにはどうしたら良いのでしょうか?
メモのリストをjsファイルで
let memos=$(".a-memo")と定義して
function tipsopen(){ const index=memos.index(this) $(".switchin").eq(index).removeClass("blind"); $(".switchout").eq(index).addClass("blind"); console.log(index) } function tipsclose(){ 〜略〜 } opens.click(tipsopen) closes.click(tipsclose) })
としたのですが開くボタンを押すと開かず、console.log(index)はクリックしたメモのid番号が返ってくると思っていたら「-1」と返ってきました。
長くなってしまい申し訳ございませんがよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/18 10:55
2020/02/18 13:00
2020/02/18 15:19
2020/02/18 17:18
2020/02/18 17:19
2020/02/19 04:35
2020/02/19 04:45
2020/02/19 04:51
2020/02/19 04:57