ruby初心者です。質問させていただきます。
ruby on rails とJavaScriptで簡単なシステムを作っています。
削除ボタンを実装中に以下の問題が発生しました。
JSのaddEventListnerのmouseover,mouseoutを使って削除ボタンが対象の部分にマウスが乗っているときだけ表示させるようにしたいです。
例えば画像の「ごりら2」の上にマウスが乗っているときに「ごりら2」の部分だけに表示させたいのですが
このように「ごりら2」にマウスを乗せると下の「ライス」にも削除ボタンが表示されてしまいます。
document.querySelecterAllを使い、対象のクラスを取得してforEachでaddEventListnerをかけています。
【HTML】
<% @nutritions.each do |nutrition| %>
<tr height="60" class="content-post">
<td class="ingredient-column" id="ingredient-column"><%= nutrition.ingredient %>
<div class="more" id="more">
<ul class="more-list" id="more-list">
<li>
<%= link_to '削除', nutrition_path(nutrition.id), method: :delete, data: { confirm: '削除しますか?'} %>
</li>
</ul>
</div>
</td>
<td><%= nutrition.protein %></td>
<td><%= nutrition.lipid %></td>
<td><%= nutrition.carbohydrate %></td>
</tr>
<% end %>
</table>
【JS】
window.addEventListener('load', function(){
const deleteButton = document.querySelectorAll(".more-list")
const ingredientColumn = document.querySelectorAll(".ingredient-column")
ingredientColumn.forEach(function(column){
deleteButton.forEach(function(list){ column.addEventListener('mouseover', function(){ list.setAttribute("style", "display:block;") }) column.addEventListener('mouseout', function(){ list.removeAttribute("style", "display:none;") }) })
})
})
【CSS】
.ingredient-column {
display: flex;
justify-content: space-between;
}
.more {
}
.more-list{
display: none;
}
どのようなコードを書けば対象の要素にだけ表示できますでしょうか。
教えていただけますと幸いです。
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/11 01:17