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

Javascript jquery正则表达式问题匹配任何字符串a-zA-Z0-1,javascript,jquery,Javascript,Jquery,对于某些原因,我不能使用嵌套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,我正在尝试切换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();
    }
});

id=单击以切换子对象
==id=a-1
==id=a-1-f
==id=a-1-g
==id=a-2
id=b
$('.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();
}
});
在js中,我应该为上面的str做什么

我试图做的是:单击上面的任何div:隐藏它的所有子对象和子对象,或者只显示它的子对象

隐藏正在工作。然而,我不知道该如何让这个节目发挥作用


例如,单击id=a将隐藏所有id=a-1、a-xx-xx等,再次单击id=a将仅显示其下一级子级

您将首先在所有节点上删除类,然后在当前节点上切换。因此,它将始终打开。下面是一个稍加修改的版本,应该可以做到这一点。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();
    }
});

好的,但我猜不出这个问题。