我正在尝试为我的网站制作产品页面,不幸的是我无法在 Javascript 中隐藏除特定页面之外的任何其他显示。
首先,我将每 24 个 div
打包成一个 div
:
var lis = $(".products li");
for(var i = 0; i < lis.length; i+=24) {
lis.slice(i, i+24)
.wrapAll("<div class='products'></div>");
}
然后我给类的每个对象,它的id:
$('.products').each(function(i, obj) {
if (i > 0) {
obj.id = "p" + i
}
});
我测试过它是否可行,确实可行。
之后,我发出 GET 请求,以便用户选择页面。
{{ currentpagen }}
是 GET 请求的值,例如,在本例中为 1
。
然后我添加了代码,所以所有其他 div 都将被隐藏,除了当前页面第一:
$(".products:not(#p + {{ currentpagen }})").css("display", "none");
$('#p' + {{ currentpagen }}).css("display", "flex");
这是行不通的,所有元素都将被隐藏,包括那些不应该被想法隐藏的元素,例如,在这种情况下,所有元素都应该被隐藏,#p1
除外.
那么可能是什么问题呢?有没有更好的方法来做到这一点? Id 显然有效,因为我尝试改变他们的风格,但我认为它与 :not
选择器有关。
如果您想知道双花括号的用途,它在 Django 中用于将变量从系统移动到 HTML,因此每当我获得 GET 请求的值时,我将变量传输到 HTML,然后使用双花括号大括号 {{}}。
最佳答案
你应该注意你的模板系统正在用你的 JavaScript 代码做什么。
恕我直言,这可能会更好:
$(".products:not(#p" + {{ currentpagen }} + ")").css("display", "none");
结果应该是这样的:
关于javascript - 查询 :not selector doesn't work with style on class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42465967/