jquery - 更改列表点击轨道上的内容
问题描述
我有一个由以下组成的模式: - 左侧的步骤列表 - 右侧的内容框
我需要能够点击左侧的步骤,右侧的内容会随着相应的步骤描述发生变化。
用于显示左侧步骤和右侧内容的标记:
<div class="uk-width-1-3">
<ul class="pill-steps">
<% @pill.steps.each_with_index do |step, index| %>
<li class="pill-step"><span class="pill-number"><%= index + 1%></span><%= step.name %></li>
<% end %>
</ul>
</div>
<div class="uk-width-2-3 uk-padding-large pill-content">
<% if @pill.steps.any? %>
<% @pill.steps.each_with_index do |step, index| %>
<div id="<%= @pill.id %>" class="pill">
<h2><%= @pill.steps.first.name %></h2>
<p><%= @pill.steps.first.desc %></p>
</div>
<% end %>
<% end %>
</div>
js点击左边的step并在右边显示内容:
<script>
$(".pill-step").click(function() {
$(".pill-content").html("<h2><%= step.name %></h2><p><%= step.desc %></p>");
});
</script>
我不知道将 JS 放在哪里或如何使其动态 :( 基本上,我希望用户单击左侧的步骤并在右侧显示相应的step.description
和step.title。
关于如何实现这一目标的任何想法?
谢谢!
解决方案
可能有几种方法可以解决这个问题,但最简单的可能是最初给所有的.pill
a 类来隐藏它们,所以像.hidden { display: none; }
(也许不要把这个类添加到第一个药丸中,如果你需要一些东西的话在加载的内容框中)。
在用户将要单击的元素上,您需要创建一些对要显示的内容框中元素 ID 的引用。我喜欢使用jQuery.data()
这种东西,所以在可点击元素上,你会添加一个数据属性并制作一个像这样的按钮</button class="pill-button" data-pill-id="<%= @pill.id %>">
:
然后对于您的 jQuery 点击代码,您需要隐藏所有.pill
元素,然后只显示匹配的元素。所以,像这样:
$('.pill-button').on('click', function() {
$('.pill').addClass('hidden');
$('#' + $(this).data('pillId')).removeClass('hidden');
});
希望这能给你一个不错的起点。
推荐阅读
- assembly - 在一条指令中具有与操作数相同的寄存器是否合法?
- html - 如何结束单元格直到右箭头
- javascript - 移动 Opera 中的设备方向不起作用
- php - 如何使用 guzzle 下载文件并将其转发到响应而不在本地保存
- karate - 通过 karate ,我如何断言节点不存在?
- python - 访问从 ctypes 返回的结构中的指针时 Python 崩溃
- python - 使用回归模型找到固定输出的最小可能输入组合
- javascript - 如何更改 Antd 表中的 fontSize
- video - 如何手动重置从 m4s 文件创建的 mp4 视频的偏移量?
- postgresql - Postgres 区分大小写