我正在尝试使用类<td>
检查其中一个表行下面是否有.choose-array
。如果没有,它应该跳过这个元素。这是我到目前为止所做的,但它不断抛出错误cannot read property 'substr' of undefined
。
HTML
<table class="custom-includes">
<tbody><tr>
<td></td>
<td>
<input type="checkbox" name="7700-head" checked="">7700 Head
</td>
</tr>
<tr>
<th>+/-</th>
<th>Array(s)</th>
</tr>
<tr>
<td class="remove-array">-</td>
<td>
<select class="choose-array" name="array-0">
<option value="7300E-10">7300E-10</option>
<option value="7300E-17">7300E-17</option>
<option value="7300E-26">7300E-26</option>
<option value="7300E-35">7300E-35</option>
<option value="7300-52">7300-52</option>
<option value="7300-70" selected="">7300-70</option>
</select>
</td>
</tr>
<tr>
<td class="remove-array">-</td>
<td>
<select class="choose-array" name="array-2">
<option value="7300E-10">7300E-10</option>
<option value="7300E-17">7300E-17</option>
<option value="7300E-26">7300E-26</option>
<option value="7300E-35">7300E-35</option>
<option value="7300-52">7300-52</option>
<option value="7300-70" selected="">7300-70</option>
</select>
</td>
</tr>
<tr id="add-array">
<td class="add-array">+</td>
</tr>
</tbody></table>
的JavaScript / jQuery的
$("body").on("click", ".remove-array", function() {
var name = $(this).closest("tr").find(".choose-array").attr("name");
var num = parseInt(name.substr(name.length-1));
$(this).closest("tr").remove();
$(".custom-includes").find("tr").each(function() {
if ($(this).attr("id") == "add-array") {
return;
}
if ($(this).find(".choose-array")) {
var subname = $(this).find(".choose-array").attr("name");
var subnum = parseInt(subname.substr(subname.length-1));
if (subnum > num) {
$(this).find(".choose-array").attr("name", "array-"+(subnum-1));
}
}
});
});
答案 0 :(得分:2)
您可以使用.length
来判断选择器是否匹配任何内容。
var choose_array = $(this).closest("tr").find(".choose-array");
if (choose_array.length > 0) {
var name = choose_array.attr("name");
...
}