更有效的代码隐藏所有元素,除了最接近
JavaScript More Efficient code to hide all element expect cloest
我有大约20个表单。当一个按钮关闭时,窗体应该取消隐藏。
所有其他形式应该保持隐藏。'
我就是这么做的
$(document).ready(function() {
console.log( "ready!" );
$(".toggle-new-form1").click(function() {
$(".new-form1").toggleClass("hidden");
// $("input[name='union_name']").focus();
});
$(".toggle-new-form2").click(function() {
$(".new-form2").toggleClass("hidden");
// $("input[name='union_name']").focus();
});
});
这是html
的示例 <div class="form-group" style="">
<label >Email:</label>
<button type="button" id="new" style="margin-top:7px;" class="toggle-new-form pull-right btn btn-primary">Edit</button>
<p> example@gmail.com </p>
</div>
<form id="name-form" class="new-form1 hidden" method="POST" action="">
<input id="email">
<button type="submit"> Submit </button>
</form>
但我有麻烦隐藏以前激活的形式。
是否有办法使其更有效并隐藏先前激活的表单。
我也试过了
<script type="text/javascript">
$(document).ready(function() {
console.log( "ready!" );
$(".toggle-new-form").click(function() {
$(".new-form").addClass("hidden");
$(this).closest( ".new-form" ).removeClass( "hidden" )
});
});
</script>
我不知道它是怎么工作的
Js fiddle https://jsfiddle.net/0p2brLww/2/
你可以尝试这样做:对所有按钮+表单进行一次点击事件
$(document).ready(function() {
$('[class^="toggle-new-form"]').click(function() {
var el = $(this).parent().next();
$('[class^="new-form"]').not(el).addClass('hidden');
el.toggleClass("hidden");
//$(this).parent().next().find("input[name='union_name']").focus();
});
});
应该可以…
$(document).ready(function() {
$('button').click(function(e) {
var targetForm = e.target.dataset.buttonFor
$('form').addClass('hidden')
$("."+targetForm).toggleClass('hidden')
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<label >Name:</label>
<button type="button" data-button-for="first-name" style="margin-top:7px;" class="toggle-new-form pull-right btn btn-primary">Edit</button>
<p> Example first Name </p>
<form id="name-form" class="new-form first-name hidden" method="POST" enctype="multipart/form-data" action="">
<input>
</form>
<hr>
<div class="form-group" style="">
<label >Shipping & Addresses:</label>
<button type="button" data-button-for="shipping-address" style="margin-top:7px;" class="toggle-new-form pull-right btn btn-primary">Edit</button>
<p> Example Last Name </p>
</div>
<form id="name-form" class="new-form shipping-address hidden" method="POST" enctype="multipart/form-data" action="">
<input>
</form>
<hr>
对于@madalin vascu给出的答案,我建议你在这种情况下应该使用事件委托。
事件委托允许我们在父元素上附加一个事件监听器,它将为所有匹配选择器的后代触发,无论这些后代现在存在还是将来添加。
将所有表单包装在一个div
中,并像这样调用函数:
$('.divclass').on('click','[class^= "toggle-new-form"]',function() {});
小提琴来了
相关文章:
- 从同级字符串中指定最接近的元素类
- JQuery获取最接近的元素并筛选子元素
- jQuery:在更改时获取最接近的元素
- 在 AngularJS 中查找最接近的元素
- 查找具有特定数据属性 jquery 的最接近的上一个元素
- 按键查找数组中最接近的 2 个元素
- 获取最接近 jQuery 中元素的形式
- JQuery 最接近的元素,来自 GridView 中的文本框
- 如何获取最接近父类的表单元素.jQuery
- jQuery DataTable-点击获取最接近td元素的类
- jQuery获取同级或最接近的元素不起作用
- 如何使用jquery查找最接近的元素
- 无法使用JavaScript选择最接近的h2元素
- 只选择一个最接近的元素
- Jquery-查找起始元素与该选择器最接近的父元素匹配的所有元素
- 如何获取最接近当前位置的元素的值
- 如何从当前元素 jquery 中找到最接近的 UL 标签
- 使用 jQuery 从单击的元素获取最接近的输入值
- jQuery选择最接近元素的子元素
- 获取最接近具有特定id的前一个元素