考虑这个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
我使用了正则表达式[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');
},
});
什么是替代方式?
答案 0 :(得分:3)
如果您尝试将该类添加到容器中除了与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';
}
},
});
答案 1 :(得分:2)
您可以使用父ID计划缩短匹配元素的范围。
$('#plan [id^=plan-]').addClass('plan-hide');