这个双线jquery可以缩短到1行吗?

时间:2011-05-01 06:30:51

标签: javascript jquery

我有这些div,每个都有相同的班级.onediv和不同的ID div1, div2, div3

<div class="alldivs">
   <div class="onediv" id="div1">
   </div>
   <div class="onediv" id="div2">
   </div>
   <div class="onediv" id="div3">
   </div>
</div>

我想使用jquery更改其css display属性,以便所有属性display noneid=div2 display block之外的$('.onediv').css('display', 'none'); $('#div2').css('display', 'block'); 。现在我用2行这样做。是否有更快的方法只用一行做同样的事情?

{{1}}

6 个答案:

答案 0 :(得分:5)

如果您在兄弟姐妹中隐藏/展示,那么最通用(且仍然高效)的解决方案是使用.siblings(),如下所示:

$("#div2").show().siblings().hide();

请注意,.show().hide()是用于设置display CSS属性的快捷方式(在none之间,之前为block}在默认的<div>情况下。)

答案 1 :(得分:2)

$('.onediv:not(#div2)').css('display', 'none');

答案 2 :(得分:2)

可以使用filter功能,但不建议出于性能原因:

$('.onediv').hide().filter('#div2').show();

答案 3 :(得分:0)

$('#div2')。siblings()。css('display','none');

答案 4 :(得分:0)

这是一个有创意的(但不一定有用):

$(".alldivs > div:even").hide();

这是另一个:

$(".onediv:not(:eq(1))").hide();

此代码预计默认情况下您的div不会被隐藏(即.css中没有显示:无)

答案 5 :(得分:0)

试试这个:

$('.onediv').not('.onediv:last-child').css('display', 'none');    

请不要贬低!这很有效。点击此处:http://jsfiddle.net/ASBcg/

编辑: 如果你想明确地表明div会更好:

$('.onediv').css('display', 'block').not('.onediv:last-child').css('display', 'none');