如何根据点击值jquery显示隐藏内容
How to show hidden content according to clicked value jquery?
抱歉理解。我的意思是索引,而不是价值。不好意思。
我想知道是否有办法使用此jsfiddle示例的显示内容" .wbox"的值与隐藏值一致,单击时将显示隐藏内容?
例如,单击"Cont 1"时,将显示隐藏的框 1。单击 Cont2 时,隐藏框 2 显示...等等。
这是我的小提琴:http://jsfiddle.net/kqbLtn8b/1/
.HTML:
<div class="box">
<div class="content one">
<h1>Cont 1</h1>
</div>
<div class="content two">
<h1>Cont 2</h1>
</div>
<div class="content three">
<h1>Cont 3</h1>
</div>
</div>
<div class="hidden-content">
<div class="hidden-box b-one">one</div>
<div class="hidden-box b-two">two</div>
<div class="hidden-box b-three">three</div>
</div>
jquery:
var boxVal = $('.box').val();
感谢您的任何帮助!
我真正想做的是缩短代码,如下所示:
$('.one').on('click', function(){
$('.b-one').show()
});
以此类推,其余的
试试这个:使用 content
div 的索引来显示hidden-box
$(function(){
$('.content').click(function(){
var index = $(this).index();
$('.hidden-content .hidden-box:eq('+index+')').show();
});
});
并在您的 css 中进行更改,而不是隐藏div hidden-content
您需要隐藏hidden-box
.所以改变你的
.hidden-content{
display:none;
}
自
.hidden-box{
display:none;
}
演示
如果你想坚持使用你拥有的当前 HTML,它将是繁琐和肮脏的,因为有两种方法可以处理这种情况。
- 将像"Cont 1"这样的字符串翻译成"一","Cont 2"翻译成"two"。到九点都很好,但是100->一百呢?甚至一千?
- 另一种方法是不要将隐藏框命名为"b-one"、"b-two",而是将它们命名为"b-1"、"b-2"、"b-3"。这样,您可以检测单击的元素,然后擦除"Cont"部分,然后使用字符串的其余部分来获取隐藏部分的类。
上述两种情况仍然会给你一个非常非常脏的代码,因为你必须得到点击元素的.html()
和h1
标签的提示。
所以我的建议是遵循以下方法。
.HTML:
<div class="box">
<div class="content one" rel="1">
<h1>Cont 1</h1>
</div>
<div class="content two" rel="2">
<h1>Cont 2</h1>
</div>
<div class="content three" rel="3">
<h1>Cont 3</h1>
</div>
</div>
<div class="hidden-content">
<div class="hidden-box b-1">one</div>
<div class="hidden-box b-2">two</div>
<div class="hidden-box b-2">three</div>
</div>
.JS:
$('.content').on('click', function(){
var divNum = this.rel;
$('.b-'+divNum).show();
});
我建议通过以下方式重组你的 HTML:
<div class="box">
<div class="content" id= "c1">
<h1>Cont 1</h1>
</div>
<div class="content" id= "c2">
<h1>Cont 2</h1>
</div>
<div class="content" id= "c3">
<h1>Cont 3</h1>
</div>
<div class="hidden-content">
<div class="hidden-box" id= "h1">one</div>
<div class="hidden-box" id= "h2">two</div>
<div class="hidden-box" id= "h3">three</div>
然后使用它作为你的jQuery代码:
$('.content').click(function(){
var num = $(this).attr('id').split("c")[1];
$("#h"+num).show();
});
顺便说一下,也改变你的 CSS:
.hidden-content{
/* display:none;*/
}
.hidden-box{
width:35px;
height:35px;
border:1px solid black;
display:none;
}
这是另一种方式(虽然不是那么可靠,因为如果你改变你的类,它会中断(:
$(function () {
$('.content').on('click', function () {
var className = $(this).attr('class').replace('content', '').trim();
$('.hidden-box').hide();
$('.b-' + className).show();
});
});
.hidden-box {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="box">
<div class="content one">
<h1>Cont 1</h1>
</div>
<div class="content two">
<h1>Cont 2</h1>
</div>
<div class="content three">
<h1>Cont 3</h1>
</div>
</div>
<div class="hidden-content">
<div class="hidden-box b-one">one</div>
<div class="hidden-box b-two">two</div>
<div class="hidden-box b-three">three</div>
</div>
更新
根据我同意@Regent评论,这将是一种更可靠的方法,因为即使您更改标记,它也会起作用。您只需要在标记中添加一个用于匹配元素的 data
属性:
$(function () {
$('.content').on('click', function () {
var sel = $(this).data('rel');
$('.hidden-box').each(function () {
$(this).toggle($(this).data('rel') == sel);
});
});
});
.hidden-box {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="box">
<div class="content one" data-rel="1">
<h1>Cont 1</h1>
</div>
<div class="content two" data-rel="2">
<h1>Cont 2</h1>
</div>
<div class="content three" data-rel="3">
<h1>Cont 3</h1>
</div>
</div>
<div class="hidden-content">
<div class="hidden-box b-one" data-rel="1">one</div>
<div class="hidden-box b-two" data-rel="2">two</div>
<div class="hidden-box b-three" data-rel="3">three</div>
</div>
相关文章:
- 在jquery中为显示/隐藏设置cookie
- PHP Javascript显示/隐藏按钮不工作
- 打开/关闭按钮以显示/隐藏内容
- 显示隐藏复选框
- 在bootstrap中显示隐藏特定的li
- JQuery上下文菜单显示/隐藏问题
- JQuery在单击时停止显示/隐藏
- HTML5在提交并显示所需标签后显示隐藏的表单元素
- 使用 jQuery 切换显示/隐藏
- 显示/隐藏有关模型更改的指令内容
- Bootstrap在页面加载缓慢时会立即显示隐藏的模式对话框
- 根据特定条件使用ng显示/ng隐藏来显示/隐藏元素
- 显示/隐藏不起作用
- 使用ng-hide根据条件显示/隐藏按钮
- 仅在第一个结果中显示/隐藏MySQL结果函数
- 显示/隐藏http://ftp链接
- 在显示/隐藏中单击时删除的文本
- 是否可以在不重新渲染的情况下显示/隐藏父对象中的元素
- 将页面内容向左移动时显示/隐藏右侧面板
- 显示/隐藏将不会加载