需要循环 jquery
Need for loop jquery
>我有以下代码
$('.button1').click(function(){
$('.docs_main2,.docs_main3,.docs_main4,.docs_main5,.docs_main6,.docs_main7,.docs_main8,.docs_main9,.docs_main10,.docs_main11,.docs_main12,.docs_main13,.docs_main14,.docs_main15,.docs_main16,.docs_main17,.docs_main18,.docs_main19').fadeOut("slow");
});
$('.button2').click(function(){
$('.docs_main1,.docs_main3,.docs_main4,.docs_main5,.docs_main6,.docs_main7,.docs_main8,.docs_main9,.docs_main10,.docs_main11,.docs_main12,.docs_main13,.docs_main14,.docs_main15,.docs_main16,.docs_main17,.docs_main18,.docs_main19').fadeOut("slow");
});
在这种情况下,当我单击"button1"类名时,其他按钮 2 到 18 将被隐藏。
当我单击"button2"类名时,其他按钮 3 到 18 和按钮 1 将被隐藏。
我需要这个代码在循环中。有人可以给我这个吗?
for 循环,但是当您有代码在"name"+index
上进行选择时,这将表明代码的语义和结构存在更深层次的问题。
我建议添加一个类(具有语义有意义的名称)并将其添加到所有元素中(只是doc_main
可能起作用,例如:
<div class="doc_main1">
成为
<div class="doc_main">
这将允许你做
$(".doc_main").hide();
元素可以有多个类。因此,如果您需要另外保留唯一的类(需要更多信息来说明),您也可以这样做。
如果您必须使用 for 循环(我从未见过必须使用 for 循环的类似情况)。你可以做:
$('.button1').click(function(){
for(var i=2;i<=19;i++){
$(".doc_main"+i).fadeOut("slow"); // please don't do this :(
}
});
如果我可以添加最后一个提示 - 为您的类和变量选择有意义的名称。
你能编辑 HTML 吗?为什么不为每个按钮的元素分配公共类(例如"hide1"和"hide2"),如下所示:
<elem class="docs_main2 hide1"/>
<elem class="docs_main3 hide1 hide2"/>
....
<elem class="docs_main18 hide1 hide2"/>
这样,您只需按公共类进行选择:
$('.button1').click(function(){
$('.hide1').fadeOut("slow");
});
$('.button2').click(function(){
$('.hide2').fadeOut("slow");
});
更短、更好的代码版本
$('.button1,.button2').click(function () {
$('[class^=docs_main]').not('.docs_main' + $(this).attr('class')replace('button', '')).fadeOut("slow");
});
引用
.not()
属性等于选择器
^ 属性开始与选择器
.attr()
.replace()
$('.button1').click(function(){
for(var i = 2; i <= 18; i++ ){
$('.docs_main'+i).fadeOut("slow");
}
});
$('.button2').click(function(){
for(var i = 3; i <= 18; i++ ){
$('.docs_main'+i).fadeOut("slow");
}
$('.docs_main1').fadeOut("slow");
});
尽管我强烈建议编辑您的 html,因为这样的事情会在未来的维护中令人头疼。
"我需要这段代码进入循环。"
不,你没有。使用 for 循环执行此操作是一个相当简单的练习,但您真正需要的是更好地构建您的 html。你没有显示你有什么,但我建议你给你的button
元素一个公共类,并使用data-
属性来指示关联的元素:
<button class="button" data-associated="dm1">Button 1</button>
<button class="button" data-associated="dm2">Button 2</button>
然后为所有这些docs_mainX
元素提供相同的类(删除数字),以便您可以轻松地一次选择它们,同时为它们提供唯一 ID(或某种唯一data-
属性)以将它们与关联的按钮匹配:
<div id="dm1" class="docs_main">blah blah</div>
<div id="dm2" class="docs_main">blah blah</div>
因为这样你的jQuery就变成了这样简短而简单的东西:
$(".button").click(function() {
$(".docs_main").not("#" + $(this).attr("data-associated")).fadeOut("slow");
});
(编辑) 附言如果你的按钮元素碰巧在.docs_mainX
元素内,并且想法是隐藏除单击的元素之外的所有元素,它会变得更加简单,因为你不需要任何 id 或 data-
属性,你可以从类中删除数字以使它们全部.doc_main
然后做这样的事情:
$(".button").click(function() {
$(".docs_main").not($(this).closest(".docs_main")).fadeOut("slow");
});
// OR
var $buttons = $(".button").click(function() {
$buttons.not(this).closest(".docs_main").fadeOut("slow");
});
- jQuery:循环一个具有不同超时值的循环
- jQuery循环在特定位置暂停
- 循环中的jQuery循环
- 使用val()在jquery循环中设置html字符串的val
- $.每个jquery循环打印一个“;未定义的“;对于getJSON请求后的每个元素,网格数据都会完美地打印出来
- jQuery循环寻呼机附加较小的图像大小
- 如何优化这个jquery循环的执行时间
- Jquery循环停止按钮
- 如何使用jQuery循环变量名
- Jquery循环洗涤器插件:添加到图像的链接
- 遍历 jQuery:循环遍历子项
- Javascript / JQuery循环访问已发布的ajax数据字符串以为其分配新值
- Jquery 循环一次或在数据数组中显示一次数据
- Jquery 循环与名称 increament.
- jQuery 循环 JSON 结果,对象作为值
- 正在尝试将jquery鼠标滚轮插件插入到jquery循环2中
- jQuery循环遍历每个li并检查一个类
- 使用jQuery循环遍历颜色数组
- 使用jquery循环表行并通过类名访问数据
- 对未知数量的元素执行Jquery循环