Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:删除重复元素-临时_Javascript_Jquery_Duplicates - Fatal编程技术网

Javascript jQuery:删除重复元素-临时

Javascript jQuery:删除重复元素-临时,javascript,jquery,duplicates,Javascript,Jquery,Duplicates,我有一个带有公共类的元素列表,希望隐藏所有重复的元素。我可以做到这一点。但是,我有一个显示和隐藏元素列表的“切换”链接。当切换发生时,我希望浏览器“重置”或“忘记”标记为重复的内容,以便用户再次单击过滤器 My显示过滤器正在工作,但我不想像第19行那样将#container的每个子DIV都更改为可见元素—例如,在我的项目中,这已经发生在该代码之外。要“忘记”元素,我需要使用类似于第18行的内容,尽管这似乎不起作用 优选地,“遗忘”将在元素被隐藏时立即发生(第7行),因此它准备在过滤器的未来实例中

我有一个带有公共类的元素列表,希望隐藏所有重复的元素。我可以做到这一点。但是,我有一个显示和隐藏元素列表的“切换”链接。当切换发生时,我希望浏览器“重置”或“忘记”标记为重复的内容,以便用户再次单击过滤器

My显示过滤器正在工作,但我不想像第19行那样将
#container
的每个子DIV都更改为可见元素—例如,在我的项目中,这已经发生在该代码之外。要“忘记”元素,我需要使用类似于第18行的内容,尽管这似乎不起作用

优选地,“遗忘”将在元素被隐藏时立即发生(第7行),因此它准备在过滤器的未来实例中再次出现。正确的语法是什么

编辑:为了更好地了解我的目标:

  • 在左侧点击“证券”复选框。您将看到“测试作业”出现。取消选中该框

  • 在左侧单击“秘书”复选框。您将看到“测试作业”出现。取消选中该框

  • 再次点击“证券”。说到底,“测试作业”不会出现,但我希望浏览器“忘记”它被标记为“已看到”并显示出来

  • 这一点是,如果选中两个复选框,则不会出现重复条目-如果您同时勾选“证券”和“秘书”,您可以看到这一点正在发挥作用,但我希望它在隐藏重复条目后立即忘记,以便在单击一个复选框后,再次显示“测试作业”


    希望这有意义

    一旦选择了所有这些元素,就可以通过添加一个只有它们才能拥有的特殊类来隐藏它们,比如
    tempHidden
    或其他什么。然后,当您准备再次显示它们时,您可以选择具有该“特殊”类别的所有项目:

    当你准备好再次展示时

    $('.tempHidden').show();
    
    当您需要选择除隐藏项以外的所有项时,可以使用
    .not()
    方法:

    $('.everything').not('.tempHidden');
    

    根据以下评论中的要求进行了更新(上一个已被破坏,但不是):

    基本上,对每个作业使用相同的
    id
    ,允许我们跟踪作业,并且我们可以为检查作业类型分配多个类。可能有多种方法可以实现这一点,可能更多地取决于您实际如何显示它们,但这是可行的

    HTML:

    JS:


    我不明白你想要什么。。。我取消了您的
    seen[txt]=false的注释,它隐藏和显示得很好。感谢您的查看-请查看上面我的编辑。感谢您的评论,也许我不够具体-请查看我在原始帖子中的编辑。在这种情况下,您可以在('change',function(){})上执行
    $('.someCheckBox')。on('change',function(){})
    ,只需根据单击的内容及其当前选中状态显示和隐藏块即可。感谢您的发布-需要的是,单击一个复选框显示一个作业,同时选中两个复选框也只显示一个作业-因此,选中两个复选框时只显示一个作业。你明白我的意思吗?当两者都被检查时,哪个作业应该是可见的?您是否需要能够通过多次翻页一次只显示一个?或者你的意思是,从技术上讲,这两份工作都是同一份工作,只是被认为是保安和秘书的工作?是的,没错,这是一份既属于保安又属于秘书的工作,我只是不想让它出现两次。我会想,通过设置
    seen[txt]=false,一旦DIV被隐藏,它下次会再次显示吗?有些东西告诉我,我只缺少一两行代码。@Chris好的,这一行完全有效。最后一个问题是取消隐藏和隐藏不同的复选标记。非常感谢,我稍后会看一下并给你回复。
    
    $('.everything').not('.tempHidden');
    
    <div id="input">
        <form>
            <input type="checkbox" name="jobs" value="security">Security
            <br>
            <input type="checkbox" name="jobs" value="secretarial">Secretarial
        </form>
    </div>
    <div id="display">
        <div class="posting hidden security" id="12345">
             This is a test Security job. Id: 12345
        </div>
        <div class="posting hidden secretarial" id="12345">
             This is a test Secretarial job. Id: 12345
        </div>
    </div>
    
    .posting {
        border: 2px solid #000000;
    }
    .hidden {
        display: none;
        visibility: hidden;
    }
    #input {
        float: left;
    }
    #display {
        margin-left: 100px;
        float: left;
    }
    
    $("#input form input").change(function () {
        var jobType = $(this).val();
        var jobIds = [];
        var id;
    
        function getJobs() {
            $(".posting." + jobType).each(function () {
                id = $(this).attr("id");
                if ($.inArray(id, jobIds) === -1) {
                    jobIds.push(id);
                    $(this).toggleClass("hidden");
    
                    if ($(this).hasClass("hidden")) {
                        jobIds = jQuery.grep(jobIds, function (value) {
                            return value != id;
                        });
                    }
                }
            });
        }
    
        $(".posting:not(.hidden, ." + jobType + ")").each(function () {
            id = $(this).attr("id");
            if ($.inArray(id, jobIds) === -1) {
                jobIds.push(id);
            }
        });
    
        //Toggle jobs
        getJobs();
        jobType = $(":checked").val();
        getJobs();
    });