javascript - jQuery .detach/append 在 if/else 语句中

标签 javascript jquery append detach

我在为自定义帖子类型分类法创建类别过滤器时遇到了一些麻烦,我已经尝试过在 jQuery 中分配不同的东西,我认为这应该是获得我想要的内容的最佳方式。

代码:

var divs;

$('.category').on('click', function() {
    if(divs == 1) {
        alert('ayylmao?');
        $('section#showcase').append(detached);
        divs = 0;
    } else {
        divs = 1;
        var lolxd = $(this).find('a').attr('id');
        alert(lolxd);
        var detached = $('section#showcase').contents().not("." + lolxd).detach(); 
    }
});

不久前我使用了 jQuery,但由于某种原因,var 'detached' 不会 append 到展示部分。

想听听我做错了什么;_;

最佳答案

detached 在您的点击处理函数中声明。这意味着每次函数运行时都会重新创建它。

将其与您使用 div 进行对比,后者是在函数外部声明的,因此在函数调用之间持续存在。

有很多方法可以解决这个问题,但最简单的方法是遵循与 div 相同的模式,并使用如下所示的代码:

var divs;
var detached;
$('.category').on('click', function() {
    if(divs == 1) {
        alert('ayylmao?');
        $('section#showcase').append(detached);
        divs = 0;
    } else {
        divs = 1;
        var lolxd = $(this).find('a').attr('id');
        alert(lolxd);
        detached = $('section#showcase').contents().not("." + lolxd).detach(); 
    }
});

更一般地说,听起来就像当您分离展示柜时,您希望保留它,以便以后可以将其添加回来。根据程序的构成,将该项的 display 更改为 none 可能会更有用。但是,如果您有多个可以 append 到展示的内容,这确实会改变语义。

关于javascript - jQuery .detach/append 在 if/else 语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43921324/

相关文章:

javascript - 是否可以在现有的javascript函数中添加一些代码而不修改原始代码?

javascript - 如何使用 discord.js 创建角色

javascript - 避免直接修改 prop,因为只要父组件重新渲染,该值就会被覆盖

javascript - SwfObject 注册对象?

javascript - 在javascript中执行动态创建的代码

file - 如何 append 到 Azure 存储文件共享中的文件?

javascript - Annyang语音识别问题

jquery - ASP.NET MVC - 页面卸载

javascript - Jquery 多模态插件

go - 为什么在预分配的 slice 上追加比索引更快?