好吧,我有一个包含特定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。
答案 0 :(得分:6)
您可以像以下一样使用attribute starts with selector。
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;
答案 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>