【问题标题】:Jquery script not working to alter CSS on changeJquery脚本无法在更改时更改CSS
【发布时间】:2016-02-24 07:07:15
【问题描述】:

我添加了一些自定义元素,这些元素将包含在我的 WooCommerce 帐户页面中,以便与订单历史记录一起查看。不幸的是,该页面设置了选项卡,仅显示与活动选项卡有关的信息。

我对jquery不是很熟悉,但我认为当订单历史显示为none时,使用jquery隐藏我添加的div会很简单。

我在主题的 main.js 文件中添加了以下脚本:

$(document).ready(function(){ 
    var display = $('.my_account_orders');
    if(display.css("display") == "none") {
        $('.paging-nav').css("display","none");
    }
});

当 .my_account_orders 类显示为 none 时,它​​应该将我添加的 div (.paging-nav) 更改为显示为 none。但它只是不起作用。

这个脚本有问题还是我需要做一些特别的事情来启动它?因为它在我的主题的 main.js 文件中,并且我使用了$(document).ready(function(),所以我认为它会随页面一起加载。

对此的任何帮助将不胜感激。

【问题讨论】:

  • 你的 if 语句中有错误的 $,试试if(display.css("display") == "none") {
  • 你没有 var $display
  • 您刚刚所做的编辑是否暗示了该问题?比较 display$display
  • 我刚刚通读并尝试了所有给出的解决方案和建议,但不幸的是它仍然无法正常工作。我已经更新了上面的脚本以反映我上次尝试的内容。感谢您迄今为止的所有帮助。

标签: javascript jquery css wordpress woocommerce


【解决方案1】:

而不是使用:

var display = $('.my_account_orders');

像这样在 if 语句中实现它:

if($('.my_account_orders').css("display") == "none") {

因为原来它是在寻找一个叫$display的变量,所以它会返回一个未定义的语法错误。

【讨论】:

    【解决方案2】:

    您的 if 语句中有错误的 $。这应该可以代替:

    $(document).ready(function(){ 
        var display = $('.my_account_orders');
        if(display.css("display") == "none") {
            $('.paging-nav').css("display","none");
        }
    });
    

    还请记住,您的 var display 只会匹配具有 my_account_orders 类的第一个元素,因此如果该类有多个元素,并且它们的显示不同,你可能会得到意想不到的结果。

    【讨论】:

    • 我尝试使用它,但它不起作用。我也检查了firefox和chrome。 .my_account_orders 类在此页面上仅使用一次。
    • @nickyb 你能分享你在 jsfiddle 中使用的渲染标记吗?这将帮助我们重现问题并找到解决方案。
    【解决方案3】:

    试试这个:

    $(document).ready(function(){ 
    var display = $('.my_account_orders');
    if(display.css("display") == "none") {
            $('.paging-nav').css("display","none");
        }
    });
    

    【讨论】:

      【解决方案4】:

      我认为检查 css 属性(例如 display)以确定元素是否为 hidden 是一种非常蹩脚的方法。使用 jquery,您可以使用 :hidden 选择器来确定元素是否为 hidden 并返回 bool 值。

      $(document).ready(function(){ 
          if($('.my_account_orders').eq(0).is(":hidden")) // eq(0) is optional - it basically targets the 1st occurring element with class 'my_account_orders'
          {
              $('.paging-nav').css("display","none");
          }
      });
      

      例如:https://jsfiddle.net/DinoMyte/sgcrupm8/2/

      【讨论】:

      • 谢谢,但这也不起作用。也许有什么东西阻止了状态变化?我会继续四处寻找更长的时间,但是通过选项卡的单击事件隐藏元素并使元素再次可见可能同样容易。
      • 我想此时您可能还需要发布 html 以了解确切的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 2011-06-26
      • 2018-02-02
      • 1970-01-01
      • 2022-11-29
      相关资源
      最近更新 更多