切换隐藏/显示 Div 不起作用
Toggling hide/show Div's is not working.
我有一个包含多个表单的容器(#main_Container)。每个表单都在它自己的容器( .module )。在每个 (.module) 容器中,我有 2 个图标,需要能够展开和折叠它们的表单。但是,我无法让他们对其父容器进行操作。每次我点击展开或收缩时,所有表单都会受到影响。
<script>
$(document).ajaxSuccess(function () {
$("form.common").hide();
$(".expand").click(function(){
$(this).closest("form.common").show();
});
$(".collapse").click(function () {
$(this).closest("form.common").hide();
});
});
</script>
<div id="main_Container">
<div class="module">
<h3>Customer Activity Log</h3>
<div class="module_actions">
<span class="icons_small right expand">+</span> <!-- -->
<span class="icons_small right collapse">-</span> <!-- -->
</div>
<form class="common">
<p>Form Stuff</p>
</form>
</div>
<div class="module">
<h3>Customer Activity Log</h3>
<div class="module_actions">
<span class="icons_small right expand">+</span> <!-- -->
<span class="icons_small right collapse">-</span> <!-- -->
</div>
<form class="common">
<p>Form Stuff</p>
</form>
</div>
</div>
.closest()
将搜索集合中的一个元素,通过测试元素本身并在 DOM 树中遍历其祖先来获取与选择器匹配的第一个元素。
根据您的 DOM 结构,form.common
是.expand
和.collapse
父级的同级元素。
尝试:
$(document).ajaxSuccess(function () {
$("form.common").hide();
$(".expand").click(function(){
$(this).parents().next("form.common").show();
})
$(".collapse").click(function() {
$(this).parents().next("form.common").hide();
});
});
工作演示
您正在使用 .closest("form.common")
,它只查看所选元素及其在 DOM 层次结构中的父元素。由于 <form>
标记不是范围的父标记,因此不会选择它。
您可以使用以下内容:
$(this).closest(".module_actions").next("form.common").show()
要使用展开/折叠,如果您使用 ID,这将非常有用。解决方案是向每个表单添加一个 id 并使用数据属性。它会是这样的:
.HTML
<div class="module">
<h3>Customer Activity Log</h3>
<div class="module_actions">
<span class="icons_small right expand" data-target="#form1">+</span> <!-- -->
<span class="icons_small right collapse" data-target="#form1">-</span> <!-- -->
</div>
<form class="common" id="form1">
<p>Form Stuff</p>
</form>
</div>
.JS
$(".expand").click(function(evt){
evt.preventDefault();
var form = $(this).data("target");
$(form).show();
});
$(".collapse").click(function(evt){
evt.preventDefault();
var form = $(this).data("target");
$(form).hide();
});
小提琴
如果编辑HTML不是一种选择,那么@Unknown答案是处理它的最佳方式。
相关文章:
- 使用CSS打印DIV内容,不起作用
- 使用 Div 标签的 location.href 属性时,Eval 不起作用
- "浮动“;父DIV底部的DIV不起作用.(使用Pos:rel、Bottom 0等)
- JavaScript和jQuery在主DIV上切换不起作用
- Javascript DIV Display 在 Safari 中不起作用
- 可拖动的 JQuery DIV 不起作用
- 清除 DIV 标签不起作用
- Javascript 专注于 DIV 元素在 chrome 上不起作用
- DIV 自动更新不起作用
- 在自动刷新 DIV 标签内的 PHP 中表单将不起作用
- 获取最接近的 Div 的 ID 两次不起作用
- 上次单击DIV永久颜色,由于某种原因不起作用
- 同一 DIV 上的 JavaScript 函数不起作用
- Javascript 在 JQuery 加载的 DIV 中不起作用
- 切换隐藏/显示 Div 不起作用
- 每5秒自动刷新DIV内容代码不起作用
- SVG作为Div的内联背景图像不起作用
- 鼠标滚轮在Div内不起作用
- Javascript在使用.load()加载的DIV中不起作用
- 在JQuery中追加CSS Div不起作用