jQuery .parents([selector])不适用于IE9和Firefox

时间:2013-03-04 20:29:26

标签: javascript jquery cross-browser selector parent

<html>
<body>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="application/javascript">

        $(document).ready(function() {
            $("#evaluation_complete").parents("table")[0].remove(); //doesn't work

            //this works
            //var EvalComplete = document.getElementById("evaluation_complete");
            //EvalComplete.parentNode.parentNode.parentNode.parentNode.parentNode.removeChild(
                //EvalComplete.parentNode.parentNode.parentNode.parentNode); 
        });

    </script>
    <p>Testing little code</p>
    <table>
        <tbody>
            <tr>
                <td class="button-left">&nbsp;</td>
                <td class="button-middle" nowrap="true"><div
                        style="margin: 0px 0px 1px;">
                        <a class="button-text" name="evaluation_complete"
                            id="evaluation_complete" href="#">Evaluation Complete</a>
                    </div></td>
                <td class="button-right">&nbsp;</td>
            </tr>
        </tbody>
    </table>
</body>
</html>

我无法控制表的设置方式。但我所知道的只是链接的ID。我的目标是遍历<table>元素并从DOM中删除它。我也用closest试了一下。我在Firefox和IE9中遇到的错误是remove不是函数。注释掉的块可以工作,但不是很动态。但是,在Chrome中,它可以完美运行。谢谢你的帮助。

1 个答案:

答案 0 :(得分:7)

当您尝试在本机JS元素上使用.remove()而不是jQuery元素时,它不起作用:

不是:

$("#evaluation_complete").parents("table")[0].remove();

$("#evaluation_complete").parents("table").eq(0).remove();

$("#evaluation_complete").parents("table").first().remove();

使用[0]get(0)从类似数组的jQuery对象中获取本机JS元素,该对象没有.remove()方法。

作为旁注,使用closest()会更有效,并且可以使用上面的示例。