我有一个庞大的目录树。结构大致如下。<div class="menu">
<ul id="a1b1">...</ul>
...
<ul id="a11b23">...</ul>
...
<ul id="a35b12">...</ul>
...
<ul id="a68b98">...</ul>
<ul id="a68b99">...</ul>
...
<ul id="a100b100">...</ul>/* 数字大于99,不需要修改 */
...
</div>现在我要在所有id=a+数字+b+数字 (数字范围1-99)的 ul 添加一些css样式。
这些数字式无序且非连续性的,我采用 jquery + 正则 判断处理, 我的代码如下:jQuery(document).ready(function(){
var menuArray = $('.menu').children('ul');
var id = $('.menu').children('ul').attr('id');
for (myul in menuArray) { 
var matches = id.match(/^a\d{1,2}b\d{1,2}$/);
if (matches[1]) { 
$(myul).css({...}); 


});
结果没有任何效果发生,到底哪里出了问题呢?

解决方案 »

  1.   

    jQuery的问题。正则应该没有问题!!
      

  2.   


    你的代码,真的很新奇啊。我见过for(var i=0;i<8;i++)和foreach(i in m ),还真没有见过for(i in m)的。还有这个matches[1]是什么意思?
      

  3.   

    var id = $('.menu').children('ul').attr('id');
    for (myul in menuArray) { 
    var regexq=/^a\d{1,2}b\d{1,2}$/g;
    if (regexq.test(id)) { 
        $(myul).css({...}); 
        } 
    }
      

  4.   

    我觉得是id那行的问题,$('.menu').children('ul')这返回的是一个dom数组,对一个数组用attr()方法,不知道是什么结果,可以把id那行移到循环中改为var id=myul.id;试一下
      

  5.   

    试试var re = new RegExp("^a\\d{1,2}b\\d{1,2}$","");
    $('.menu').find('ul').each(
      function(){
        if(re.test($(this).attr('id'))){
          $(this).html("true");
        }
      }
    )
    用下面的一段HTML测试可正常获取匹配。<div class="menu">
    <ul id="a1b1">1-1</ul>
    <ul id="a11b23">11-23</ul>
    <ul id="a35b12">35-12</ul>
    <ul id="a68b98">68-98</ul>
    <ul id="a68b99">68-99</ul>
    <ul id="a100b100">100-100</ul>
    </div>
      

  6.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <script type="text/javascript" src="jquery-1.6.2.min.js"></script>
    <script type="text/javascript">
    $(function(){
    $(".menu").children("ul").each(
    function(){
    if($(this).attr("id").match(/^a\d{1,2}b\d{1,2}$/))
    {
    $(this).css("color","red");
    }

    }
    );
    });

    </script>
    </head>
    <body>
    <div class="menu">
    <ul id="a1b1">1-1</ul>
    <ul id="a11b23">11-23</ul>
    <ul id="a35b12">35-12</ul>
    <ul id="a68b98">68-98</ul>
    <ul id="a68b99">68-99</ul>
    <ul id="a100b100">100-100</ul>
    </div>
    </body>
    </html>