jqeury 正则

去圣西罗-为尤文喝彩 2011-08-13 07:31:30
我有一个庞大的目录树。结构大致如下。

<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({...});
}
}
});

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

...全文
108 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢大家,楼上的几位答案都很好。
fengyun817 2011-08-13
  • 打赏
  • 举报
回复
<!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>
APM60- 2011-08-13
  • 打赏
  • 举报
回复
试试

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>
最后一个菜鸟 2011-08-13
  • 打赏
  • 举报
回复
我觉得是id那行的问题,$('.menu').children('ul')这返回的是一个dom数组,对一个数组用attr()方法,不知道是什么结果,可以把id那行移到循环中改为var id=myul.id;试一下
曹西 2011-08-13
  • 打赏
  • 举报
回复
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({...});
}
}
  • 打赏
  • 举报
回复
恩~那应该怎么写才正确?
诺维斯基 2011-08-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 soonfei 的回复:]
jQuery的问题。正则应该没有问题!!
[/Quote]

你的代码,真的很新奇啊。我见过for(var i=0;i<8;i++)和foreach(i in m ),还真没有见过for(i in m)的。还有这个matches[1]是什么意思?
诺维斯基 2011-08-13
  • 打赏
  • 举报
回复
jQuery的问题。正则应该没有问题!!

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧