jquery正则表达式问题匹配任何字符串a-zA-Z0-1

jquery regex issue match any string a-zA-Z0-1

本文关键字:任何 字符串 a-zA-Z0-1 正则表达式 问题 jquery      更新时间:2023-09-26

由于某些原因,我不能使用嵌套的div,并且我正在尝试切换div树Div id包含除-

以外的任何字符串
<div class="tree">
    <div id="a">id=a click to toggle child</div> 
        <div id="a-1"> == id=a-1</div>
            <div id="a-1-f"> == == id=a-1-f</div>
            <div id="a-1-g"> == == id=a-1-g</div>
        <div id="a-2"> == id=a-2</div>
    <div id="b">id=b</div>
</div>
$('.tree').children().on('click',function(){
    var $id = $(this).attr('id');
    $(this).parent().children().removeClass('on');
    $(this).toggleClass('on');
    $('[id^='+$id+'-]').hide();
    var str = /^[a-zA-Z0-9]*$/;
    if ($(this).hasClass('on')) {
        $('[id^='+$id+'-'+ str +']').show();
    }
});

我该怎么做上面的STR在js

http://jsfiddle.net/cn856y49/4/

我想做的是:点击上面的任何div:隐藏它所有的子和孙子,或者只显示它的子。

隐藏正在工作。然而,我不确定如何使显示工作。

如. .点击id=a会隐藏所有id=a-1, a-xx-xx等,再次点击id=a只会显示下一层的孩子

首先在所有节点上删除on类,然后为当前节点切换on。因此它将永远开着。下面是一个稍微修改的版本,应该可以做到这一点。div的初始状态是不正确的,但您可能可以从这里开始。

$('.tree').children().on('click',function(){
    var $id = $(this).attr('id');
    var on = !($(this).hasClass('on'));  // toggle "on"
    $(this).parent().children().removeClass('on');
    $('[id^='+$id+'-]').hide();
    var str = /^[a-zA-Z0-9]*$/;
    if (on) {
        $(this).addClass('on');
        $('[id^='+$id+']').show();
    }
});