我在元素类之间切换时遇到了问题 - 可能是愚蠢的,但我找不到答案。 在我的系统中,我显示了一个项目列表。现在我希望能够推广项目,以便它们出现在列表的顶部。我创建了一些可以正常使用的后端基础设施,并在我的前端添加了一些内容:每个项目标题旁边的一个明星(一个带有星星bg的跨度)和一个jQuery脚本应该是:
由于某些原因,课程不会切换 - 只有当我刷新页面时,我才能看到效果。我尝试使用Firebug进行调试 - 它进入切换线,但没有任何反应。
以下是代码:
<span class="silver-star promote">
$(".promote").bind("click", function() {
var $this = $(this);
var itemId = $this.attr("data-id"),
isPromoted = true;
if ($this.hasClass("gold-star")) {
isPromoted = false;
}
$.post('/promoteitems', { itemId: itemId, isPromoted: isPromoted }, function(allowPromotion) {
if (allowPromotion == true) {
$this.toggleClass("silver-star").toggleClass("gold-star");
}
});
});
提前致谢!
答案 0 :(得分:0)
当您收到回复时,它可能无法将其识别为布尔简单测试将检查响应为字符串
答案 1 :(得分:0)
从您对该问题的评论:
... allowPromotion值是&#39; True&#39; (有大写字母T)......
告诉我们它是一个字符串,而不是一个布尔值。您不想要if (allowPromotion)
,因为即使您回来"False"
,也会切换课程。
相反:
if (allowPromotion == "True") { // Note the quotes and capital T
// ...toggle the classes
}
或者,如果你想允许在未来的某个时间点回到小写字母T的东西:
if (/^\s*true\s*$/i.test(allowPromotion)) {
// ...toggle the classes
}
它过度设计了它(它将与"True"
,"true"
," True "
[注意空格],甚至是实际的布尔值一起使用true
)...