计算存在多少相似的ID

时间:2016-10-12 06:17:55

标签: jquery html

好吧,我有一个包含特定id元素的html文档,这个id组成如下:" word +一个以1 + word"开头的数字,并且有一个类,可能是"启用"或者"禁用"。

它是这样的:

<table>
    <tr>
        <td class="enabled" id="Bart1sim"></td>
        <td class="enabled" id="john1doe"></td>
    </tr>
    <tr>
        <td class="enabled" id="Bart2sim"></td>
        <td class="enabled" id="john2doe"></td>
    </tr>
    <tr>
        <td class="disabled" id="Bart3sim"></td>
        <td class="enabled" id="john3doe"></td>
    </tr>
    <tr>
        <td class="disabled" id="Bart4sim"></td>
        <td class="disabled" id="john4doe"></td>
    </tr>
</table>

点击任何&#34;启用&#34; td,最后一个&#34;启用&#34; td(让我们认为所有类似的ID都将tds分组)类必须更改为&#34; disabled&#34;。 点击任何&#34;禁用&#34; td,最后一次&#34;禁用&#34; td类必须更改为&#34;启用&#34;。

我想如果我可以通过ID检查最后一次&#34;启用&#34;每组的td类,这应该有效。

这是我已经拥有但不起作用的东西:

$(document).ready(Principal);

function Principal() {
    $(document).on("click touchend", ".enabled, .disabled", function() {
         LetsDoThis(this.className)
    });
}

function LetsDoThis(clas) {
    if (clas == "enabled")
        $("." + clas + "").removeClass("enabled").addClass("disabled");
    else
        $("." + clas + "").removeClass("disabled").addClass("enabled");
}

感谢您的时间。

修改

var num = $(&#39; [id ^ =&#34; Bart&#34;]&#39;)。length给出了所有id的数量以&#34; Bart&#34;开头,但是我可能有像Bart1Fla,Bart2Fla,Bart3Fla这样的ID .Bart1Ned,Bart2Ned,Bart3Ned ..这些都是不同的id组,所以我仍然需要检查数字之后的最后一个字来计算ID。

2 个答案:

答案 0 :(得分:6)

您可以像以下一样使用attribute starts with selector

&#13;
&#13;
var num = $('[id^="Bart"]').length

console.log(num);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
    <tr>
        <td class="enabled" id="Bart1sim"></td>
        <td class="enabled" id="john1doe"></td>
    </tr>
    <tr>
        <td class="enabled" id="Bart2sim"></td>
        <td class="enabled" id="john2doe"></td>
    </tr>
    <tr>
        <td class="disabled" id="Bart3sim"></td>
        <td class="enabled" id="john3doe"></td>
    </tr>
    <tr>
        <td class="disabled" id="Bart4sim"></td>
        <td class="disabled" id="john4doe"></td>
    </tr>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您可以使用Attribute Starts With[name^=”value”]Attribute Ends With [name$=”value”]选择器的组合。

您还可以使用.filter()方法添加其他支票

//Get elements which starts with "Bart" and ends with "sim"
var elements = $('[id^="Bart"][id$="sim"]');

//Additional check
elements.filter(function() {
    return /^Bart[0-9]+sim$/.test(this.id);
});

var num = elements.length;

jQuery(function() {
  //Get elements which starts with "Bart" and ends with "sim"
  var elements = $('[id^="Bart"][id$="sim"]');
  
  //Additional check
  elements.filter(function() {
    return /^Bart[0-9]+sim$/.test(this.id);
  });
  
  var num = elements.length
  console.log(num);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td class="enabled" id="Bart1sim"></td>
    <td class="enabled" id="john1doe"></td>
  </tr>
  <tr>
    <td class="enabled" id="Bart2sim"></td>
    <td class="enabled" id="john2doe"></td>
  </tr>
  <tr>
    <td class="disabled" id="Bart3sim"></td>
    <td class="enabled" id="john3doe"></td>
  </tr>
  <tr>
    <td class="disabled" id="Bart4sim"></td>
    <td class="disabled" id="john4doe"></td>
  </tr>
</table>