使用jquery .find()检查DOM中的存在项

时间:2015-08-27 01:53:03

标签: jquery

我正在尝试使用类<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));
            }
        }
    });
});

1 个答案:

答案 0 :(得分:2)

您可以使用.length来判断选择器是否匹配任何内容。

var choose_array = $(this).closest("tr").find(".choose-array");
if (choose_array.length > 0) {
    var name = choose_array.attr("name");
    ...
}