我在为自定义帖子类型分类法创建类别过滤器时遇到了一些麻烦,我已经尝试过在 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/