LI元素的Javascript正则表达式

时间:2012-09-28 14:10:34

标签: javascript regex

我正在使用Javascript中的正则表达式(请参阅here),我偶然发现尝试匹配<li>元素时遇到了一些困难。我的Css看起来像这样:

<div id="ResultTabContent" class="TabContent DetailsTabContent">
    <div class="DetailsTabContent">
    <ul>
    <li> <strong>Title:</strong>
    Text Title
    </li>
    </ul>

我编写了一些Javascript来检测写入文本标题的Unicode范围,并根据范围使用自定义字体中的PUA(私有使用区域)。这适用于类,如下所示:

$(document).ready(function() {
    $('h2.ClassName').each(function(index, DOMElement){
        if(/[\uE000-\uF8FF]+/.test($(DOMElement).text())) {
            $(this).removeClass('ClassName').addClass('ClassNameNonRoman');
        }
    }) 
});

但是我不能让它适用于UL继承的元素。这使得困难的事实是没有与<li>元素相关联的类。

有什么想法吗?

干杯,我。

1 个答案:

答案 0 :(得分:0)

因此,您似乎正在使用正则表达式来验证某些文字内容,但您的问题是关于定位没有课程的<li>元素。

您可以使用CSS样式选择器来进行DOM选择。我不确定你能选择什么,所以我将选择器从具有ID的外部<div>开始。

$(document).ready(function() {
    var li_els = $('#ResultTabContent > div.DetailsTabContent > ul > li');

    li_els.each(function(index, DOMElement){
        if(/[\uE000-\uF8FF]+/.test($(DOMElement).text())) {
            $(this).removeClass('ClassName').addClass('ClassNameNonRoman');
        }
    }) 
});

这使用>子选择器从外部DIV向下钻取到嵌套的LI元素。

然后使用.each()就像在原始代码中一样迭代LI。