【问题标题】:Putting jQuery Script at the End of the Queue in Wordpress在 Wordpress 中将 jQuery 脚本放在队列的末尾
【发布时间】:2015-05-01 03:57:49
【问题描述】:

当我意识到 Woocommerce 的 Flexslider 编辑其中一个 DIV 标签并给出 1600% 的宽度时,问题就开始了。我不想要这个属性。这就是为什么我准备了一个代码来修复它以及其他一些属性:

    jQuery(document).ready(function($){         
        $( '.slides' ).css("width", "");
        $( '.slides' ).css("margin-left", "");
        $( '.slides' ).css("margin-right", "126px");        
    });

我将此代码保存在主题的 js 目录中名为 final.js 的文件中。但我一直无法让它工作! 我读了一篇关于入队(如果有这样的动词)脚本的文章,here。我试过了,似乎该脚本将包含在其他脚本的标题中。但是不管是在其他的顶部还是底部,都行不通!

我尝试将它放在页面底部,而不使用 enqueue 方法。 我能从我的努力中得到的只是将margin-right 添加到slides 类中。这还不够。哪个代码正在更改此类,在我的自定义脚本之后触发并且不会让它发生。

你有什么建议可以让这个东西发挥作用吗? 如果你想看看这里是link to site(应该寻找:<div id="carousel" class="flexslider"><ul class="slides">)。

谢谢!

【问题讨论】:

  • 这个不需要脚本,在样式表中设置规则
  • Charlie,该属性是通过 jQuery in-line 添加的。所以 HTML 会像:
      完全加载后。您只是无法使用样式表更改内联 CSS。
  • 其实你可以使用!important覆盖
  • 啊……有趣!谢谢查理!很好的解决方法!

标签: jquery css wordpress woocommerce flexslider


【解决方案1】:

看起来你的滑块是在你的脚本之后加载的,根据 Flexslider 文档,你应该尝试在滑块加载时将代码放在回调上,如下所示:

$(window).load(function() {
    $('.flexslider').flexslider({
        start : function() {
            $( '.slides' ).css("width", "");
            $( '.slides' ).css("margin-left", "");
            $( '.slides' ).css("margin-right", "126px");   
        }
    });
}); 

【讨论】:

  • 感谢您的回答。但这给了我一些错误。你知道,wordpress 有它自己的 jQuery 语句。所以,我们不能像其他地方一样使用 $ 。我必须使用: jQuery(window).load(function($) { 但它似乎也不起作用。你能找出它有什么问题吗?
【解决方案2】:

这与 WooCommerce 没有任何关系。您的主题正在添加 Flexlider:Avada。

如果您使 flexslider 脚本成为 final.js 脚本的依赖项,则 final.js 将在 flexslider 之后加载。和/或如果您在稍后的挂钩上运行 wp_enqueue_scripts 函数,那么您也可能会在 flexslider 之后加载 final.js

我不知道 Avada 中 flexslider 的“句柄”是什么,也不知道您的自定义脚本的确切路径,但举个例子:

function so_28782012_enqueue_scripts(){
    wp_enqueue_script( 'final', get_template_directory_uri() . '/js/final.js', array('flexslider'), '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'so_28782012_enqueue_scripts', 99 );

【讨论】:

  • 谢谢赫尔加。我用了你的代码。它在页面底部添加了 final.js。我假设“flexslider”语句包含在 flexslider 之后运行的脚本。但不知何故,它在滑块之前运行并且属性被它覆盖。所以,它仍然不能以这种方式工作。也许提供这些属性的不是 flexislider。
  • 我的代码只是为了让你的脚本跟在 Flexslider 之后。最终是否能达到你的需要是另一回事。我认为 Flexslider 提供一个 div(或可能是 UL)元素是其设计的一部分。您可以在demo 中看到它的发生。也许换个说法来准确解释你需要做什么,和/或坚持使用 CSS。
  • 是的,似乎 css 太容易了。不过感谢您的代码。
猜你喜欢
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多