如果类包含十进制数字,则将其添加到span

时间:2018-08-15 13:03:19

标签: jquery css decimal

我有如下链接列表:

<span><span class="prefix">1.</span>xxx</span>
<span><span class="prefix">2.</span>xxx</span>
<span><span class="prefix">2.1.</span>xxx</span>
<span><span class="prefix">10.</span>xxx</span>

我想向该列表的.prefix元素添加一个类,该类包含一个十进制数字。到目前为止,我已经达到计数字符的程度,如果> 2,则添加class。但是,当然,十个以上的数字也会受到影响,它们不应该...

$(function() {
  $(".sub-menu span[class*='prefix']").each(function() {
    $(this).addClass($(this).text().length > 2 ? "sub" : "dom");
  });
});

我基本上需要知道如何处理.text()元素以区分小数和非小数。问题是我使用点(“。”)作为十进制逗号,但是在每个数字的末尾也是,所以我什至不能使用“:contains:”之类的东西。 “”我想我需要做的是指定一系列离散的点作为十进制和非十进制之间的区分符。

3 个答案:

答案 0 :(得分:2)

通过match,您应该可以执行此操作,因为您可以使用正则表达式。

可悲的是,正则表达式不是我的强项。所以我不确定它是否正确编写,但是逻辑在那里

$(function() {
  $(".sub-menu span[class*='prefix']").each(function() {
    var currentText = $(this).text();
    //$(this).addClass($(this).text().length > 2 ? "sub" : "dom");
    if( currentText.match(/\.\d+/g) ).length{
        //Do something - like adding the class
   }
   else{
        //Do something else - or skip
   }

  });
});

此处的正则表达式仅在存在.且后跟数字时才为真。

表示2.1是正确的

2.1.3

2.是错误的

2.1.5.是错误的

但是也许有人可以为正则表达式提供帮助

答案 1 :(得分:0)

如果您确定自己的电话号码将是有效的电话号码(例如,不是1.2.3等),则可以按1检查该电话号码的模块。

$(function() {
  $(".sub-menu span[class*='prefix']").each(function() {
    $(this).addClass(Number($(this).text()) % 1 ? "sub" : "dom");
  });
});

任何整数%1 = 0
任何小数形式的%1> 0(除非它像3.0一样可以表示为3)

答案 2 :(得分:0)

您必须尝试以下代码:

    $(function() {
       $(".sub-menu span[class*='prefix']").each(function() {
         var num = $(this).text();
         if(num % 1 != 0)
           $(this).addClass("xyz")  
      });
   });