Jquery删除最近的tr失败

时间:2011-02-04 05:54:01

标签: jquery traversal dom-manipulation

我希望在html中存在某些措辞时执行操作以删除最近的表。

我不能假设span类存在,因为html是从其他方面检索的,他们可以通过添加,随时删除任何类来改变它。

需要在页面加载时完成,而不是在单击class / id事件内部时。

有点挑战。知道如何实现这个目标吗?

在页面加载时,

jquery检测页面中是否存在“Hello how are you。”

If exist
    remove the whole td or tr or table for this particular.
else
    do nothing.
end

代码如下:

function replaceText() 
{

    var debug;
    debug= "";


    $("*").each(function() { 
        if($(this).children().length==0) 
    { 
//            $(this).text($(this).text().replace('Hello how are you', 'yohoo')); 

        debug= debug + $(this).val() + "<br>";

        if($(this).val()=="Hello how are you")
        {
            $(this).closest('table').remove();
        }

        } 
    });

//alert(debug);

}


<div>


<table>

    <tr>

    <td colspan="2">


        <div>


            <table>

            <tr>

            <td ><span class="myclass">Hello how are you</span></td>

            <td><a href="testing.php"></a></td>

            </tr>

            </table>


        </div>


    </td>

    </tr>


    <tr colspan="2">
        <table>

        <tr>

        <td><b>want to remove this</b></td>

        </tr>

        </table>
    </tr>

    <tr>
        <td>other content 1</td>
        <td>other content 2</td>
    </tr>

</table>

</div>

1 个答案:

答案 0 :(得分:0)

您可以使用:contains检查文字是否存在:

$(":contains('Hello how are you')").each(function(n){
    if ($(this).children().length == 0){
        $(this).closest('table').remove();
    }
});

此代码将遍历包含文本'Hello how are you'的所有元素。如果您想要完全匹配,还可以检查$(this).text() == 'Hello how are you'。一旦找到这些元素,它会检查它们没有任何子节点,然后在它们通过该条件时删除最近的表。

要在页面加载时运行此代码,请将其包装在document.ready函数中:

$(document).ready(function(){
  ...
});