1
<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 では問題なく動作します。助けてくれてありがとう。

4

1 に答える 1

7

.remove()jQuery 要素ではなく、ネイティブ JS 要素で使用しようとしているため、機能しません。

そうではありません :

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

しかし

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

また

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

メソッドを持たない配列のようなjQueryオブジェクトからネイティブJS要素を使用[0]または取得します。get(0).remove()

補足として、を使用closest()するとより効率的であり、上記の例で機能します。

于 2013-03-04T20:33:01.823 に答える