根据不同元素的内容删除元素

时间:2016-11-25 02:12:55

标签: jquery

我已经对jquery脚本进行了大量的非常次编辑,以满足我的需求,但我以前从未写过任何脚本。而现在我发现自己完全不知所措,所以我真的希望有人可以帮助我。

我有以下脚本在网页上创建标签:

$(document).ready(function() { 

    (function ($) { 
        $('.biog ul.tabs').addClass('active').find('> li:eq(0)').addClass('current');

        $('.biog ul.tabs li a').click(function (g) { 
            var tab = $(this).closest('.biog'), 
                index = $(this).closest('li').index();

            tab.find('ul.tabs > li').removeClass('current');
            $(this).closest('li').addClass('current');

            tab.find('.content').find('div.inner').not('div.inner:eq(' + index + ')').slideUp();
            tab.find('.content').find('div.inner:eq(' + index + ')').slideDown();

            g.preventDefault();
        } );
    })(jQuery);

});

但是,这些标签包含不同用户输入的数据,有时其中一个标签可能完全为空,因为它不适用于此人。

我可以使用以下行删除内容:

$(".history").filter(":contains('No Information')").remove()

但是这只会删除选项卡的内容,同时将选项卡本身留在要选择的选项列表中。

基本上,当传记div包含字符串“No Information”时,我想删除History选项卡 - 我不知道从哪里开始。我希望这一切都有道理,我希望有人能够帮助我。我真的很感激!

---编辑---

内容的HTML与标签完全分开。

<div class='biog'>
<h1> <!-- |field_17| --> </h1>
<div class='content'>
    <div class='portrait inner'>
    </div>
    <div class='vitals inner'>
        <div class='info'>
            <div class='right'>
                <div class='topgif'></div>
                <div class='bottomgif'></div>
            </div>
            <div class='in'>
            </div>
        </div>
    </div>
    <div class='history inner'>
        <div class='info'>
            <div class='in'> <!-- |field_40| --> </div>
        </div>
    </div>
    <div class='plots inner'>
        <div class='info'>
            <div class='shipgif'></div>
            <div class='selfgif'></div>
            <div class='ship'>
            </div>
            <div class='bottomright'>
                <div class='links'>
                </div>
                <div class='plotinfo'> <!-- |field_47| --> </div>
            </div>
        </div>
    </div>
</div>
<ul class='tabs'>
    <li><a href='#'>portrait</a></li>
    <li><a href='#'>vitals</a></li>
    <li class='histtab'><a href='#'>history</a></li>
    <li><a href='#'>plot</a></li>
</ul>
</div>

内容显示在此无序列表下方。

我实际上试图隐藏的唯一标签是历史记录 - 其他标签总是包含其中的信息。

1 个答案:

答案 0 :(得分:0)

<击> 试试这个:

$(".history").filter(":contains('No Information')").parent().remove()

<击>

修改

如果我是对的,根据您的代码段,您的标签和内容按相对顺序排列,以便您可以执行以下操作

var index = $(".content").find(".history").filter(":contains('No Information')").index();

// Make sure it found an index
if(index !== -1){
  $('.biog ul.tabs li').eq(index).remove();
}