首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替代正则表达式来隐藏匹配的id元素?

替代正则表达式来隐藏匹配的id元素?
EN

Stack Overflow用户
提问于 2012-12-01 02:51:50
回答 2查看 536关注 0票数 1

考虑一下这个HTML:

代码语言:javascript
复制
<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-],但我认为它很慢。

代码语言:javascript
复制
$("#slider").slider({
    range: "min",
    min: 0,
    max: 4
}, {
    slide: function( event, ui ) {
        $("[id^=plan-]").addClass('plan-hide');
        $("#plan-" + (ui.value+1)).removeClass('plan-hide');
    },
});

另一种方式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-01 03:00:16

如果您尝试将类添加到容器中除与UI值+ 1匹配的元素之外的所有元素中,以所有兄弟元素为目标可能会更快:

代码语言:javascript
复制
    slide: function( event, ui ) {
        $("#plan-" + (ui.value+1)).removeClass('plan-hide')
                                  .siblings().addClass('plan-hide');
    },

或者仅仅是:

代码语言:javascript
复制
    slide: function( event, ui ) {
        $('#plan').children('div').addClass('plan-hide');
        $("#plan-" + (ui.value+1)).removeClass('plan-hide');
    },

而且可能是最快的:

代码语言:javascript
复制
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';
        }
    },
});
​
票数 3
EN

Stack Overflow用户

发布于 2012-12-01 02:56:19

您可以使用parent id plan来缩小匹配元素的范围。

代码语言:javascript
复制
$('#plan [id^=plan-]').addClass('plan-hide');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13651286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档