【问题标题】:TUMBLR: How can hide a div when the page number is higher than 1?TUMBLR:页码大于1时如何隐藏div?
【发布时间】:2014-06-21 15:50:08
【问题描述】:

这是我目前所拥有的:

<script type="text/javascript"> 

if ($("{CurrentPage}").length > 1) {
  $("#comslider_in_point_234708").style.display="none";

}

</script>

这里是 tumblr 的变量(我不确定要使用哪一个,因为似乎没有一个有效):

  • {block:Pagination}{/block:Pagination}
    如果存在“上一页”或“下一页”页面,则呈现。

  • {block:PreviousPage}{/block:PreviousPage}
    如果有“上一个”页面(较新的帖子)可以导航到,则呈现。

  • {block:NextPage}{/block:NextPage}
    如果有“下一个”页面(较早的帖子)可以导航到,则呈现。

  • {PreviousPage}
    “上一个”页面的 URL(较新的帖子)。

  • {NextPage}
    “下一页”的网址(旧帖子)。

  • {CurrentPage}
    当前页码。

  • {TotalPages}
    总页数。

【问题讨论】:

  • 您是否尝试过使用if ({CurrentPage} &gt; 1) {...}
  • 就是这样,非常感谢蒂亚戈!

标签: javascript html tumblr


【解决方案1】:

你已经得到了答案,但我认为我们可以做得比只给你代码更好。

您的 JavaScript 的一个问题是您试图使用 jQuery 选择器获取 HTML 元素,而 Tumblr 变量不是 HTML 元素,它只是一个变量。然后我们从您的代码中删除了 jQuery 元素选择器,如下所示:

if ({CurrentPage}.length > 1) {
  document.getElementById("comslider_in_point_234708").style.display="none";
}

但是你的代码仍然会有其他问题,因为这样你是在检查变量length属性是否大于1,而不是变量实际值,所以如果变量等于29 例如,比较将返回 false 并导致 if 失败。

这是因为length 属性返回变量中的字符数,而不是它的值(所以10.length 返回21000.length 返回4)。为了解决这个问题,我们也删除了它,留下如下代码:

if ({CurrentPage} > 1) {
  document.getElementById("comslider_in_point_234708").style.display="none";
}

那么在第11页执行代码时,{CurrentPage}变量将包含数字11,代码运行如下:

if (11 > 1) { // returns true
  document.getElementById("comslider_in_point_234708").style.display="none";
}

另外,如果您使用的是 jQuery,您可以通过将 if 中的行替换为以下代码来改进您的代码:

$("#comslider_in_point_234708").hide();

...它使用了你之前用错地方的jQuery选择器,以及jQuery的hide()方法,相当于display:none


所以,最后,结果如下:

if ({CurrentPage} > 1) {
  $("#comslider_in_point_234708").hide();
}

【讨论】:

  • 谢谢!我真的很感激!
【解决方案2】:

后偏移量

使用 Tumblrs 自己的主题运算符而不是 javascript 可以做到这一点。块 {block:Post[1-15]} 允许您指定后偏移量。在 OP 示例中,我将使用 Post2

<style>

  <!-- Hide comslider if there is a second post on the page -->
  {block:Post2}
  #comslider_in_point_234708 {
    display: none;
  }
  {/block:Post2}

</style>

参考

Posts Basic Variables

【讨论】:

  • 感谢 mikedidthis!顺便说一句,我有一个问题要问大家。你能猜到如何在我的博客上展示广告,就像这个网站上的广告一样:wearevanity.co?如果你仔细观察,它们几乎就像“鬼柱”,有自己的照片边框,并自动调整到网格。
  • @user3624466 我会发布一个新问题。 tl;dr,使用上面的块或使用 javascript 将它们注入到文档流中。
  • 我已经发在这里了:stackoverflow.com/questions/24222941/… 里面描述的方法有解决办法,但不完全。我仍然认为有一种方法可以达到完全相同的结果。我尝试添加自定义 CSS,但不知道如何将广告加载为新的照片帖子或“幽灵帖子”。
  • 这是一个很好的答案。我不明白 if ({CurrentPage}) > 1 将如何工作,因为它是 mustache 模板的一部分,并且肯定只会在运行时呈现标准 HTML,因此 js 会失败?
  • @lharby 谢谢。 {CurrentPage} 将在 HTML 中呈现为数字,因此该语句将起作用。我相信主题操作符是自定义的,尽管它们看起来确实像把手 / 小胡子 / smarty 等。
【解决方案3】:

试试这个:

<script type="text/javascript"> 
if ({CurrentPage} > 1) {
  document.getElementById("comslider_in_point_234708").style.display="none";

}
</script>

函数中无需使用length

【讨论】:

  • 是的!非常感谢!我一直在寻找解决方案几个小时!谢谢!
  • 选择我的答案而不是将其作为接受的答案? -1
  • 抱歉,我是新手,我想我可以选择超过 1 个作为正确答案。你是第一个回答的,所以你应该得到应有的回报。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
相关资源
最近更新 更多