考虑一下这个HTML:
<div id=plan>
<div id="plan-1" class='plan-hide'>One</div>
<div id="plan-2" class='plan-hide'>Two</div>
<div id="plan-3">Three</div>
<div id="plan-4" class='plan-hide'>Four</div>
</div>我想隐藏#plan中的所有计划(plan-1、plan-2、plan-3、plan-4
我用过正则表达式[id^=plan-],但我认为它很慢。
$("#slider").slider({
range: "min",
min: 0,
max: 4
}, {
slide: function( event, ui ) {
$("[id^=plan-]").addClass('plan-hide');
$("#plan-" + (ui.value+1)).removeClass('plan-hide');
},
});另一种方式是什么?
发布于 2012-12-01 03:00:16
如果您尝试将类添加到容器中除与UI值+ 1匹配的元素之外的所有元素中,以所有兄弟元素为目标可能会更快:
slide: function( event, ui ) {
$("#plan-" + (ui.value+1)).removeClass('plan-hide')
.siblings().addClass('plan-hide');
},或者仅仅是:
slide: function( event, ui ) {
$('#plan').children('div').addClass('plan-hide');
$("#plan-" + (ui.value+1)).removeClass('plan-hide');
},而且可能是最快的:
var elems = document.getElementById('plan').getElementsByTagName('div'),
len = elems.length;
$("#slider").slider({
range: "min",
min: 0,
max: 4
}, {
slide: function( event, ui ) {
for (var i=0; i<len; i++) {
elems[i].className = elems[i].id.indexOf(ui.value+1) != -1 ? '' : 'plan-hide';
}
},
});
发布于 2012-12-01 02:56:19
您可以使用parent id plan来缩小匹配元素的范围。
$('#plan [id^=plan-]').addClass('plan-hide');https://stackoverflow.com/questions/13651286
复制相似问题