【问题标题】:jQuery Accordion stopped workingjQuery Accordion 停止工作
【发布时间】:2013-05-14 07:41:46
【问题描述】:

在我的 FTP 客户端一团糟之后,我的 Wordpress 的 header.php 被删除了,所以我需要重新编码它并且以前工作的 jQuery 脚本停止工作,但我找不到问题。

这是一个手风琴脚本,可以同时打开多个部分:

<script type="text/javascript">

$(document).ready(function() {
        $(".post-list").addClass("ui-accordion ui-accordion-icons ui-widget ui-helper-reset")
            .find("h3.entry-title")
            .addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-top ui-corner-bottom")
            .hover(function() { $(this).toggleClass("ui-state-hover"); })
            .click(function() {
              $(this)
                .toggleClass("ui-accordion-header-active ui-state-active ui-state-default ui-corner-bottom")
                .next().toggleClass("ui-accordion-content-active").slideToggle();
              return false;
        })
        .next()
        .addClass("ui-accordion-content  ui-helper-reset ui-widget-content ui-corner-bottom")
        .hide();

        var d= 0;
        $('.post').each(function() {
            $(this).delay(d).fadeIn(300);
            d += 100;
        });
});

</script>

它应该找到H3,添加类并隐藏以下div。我把它放在 header.php 的头部区域,所有必要的库都被加载了,但不知何故,脚本似乎根本不起作用。

谁能找到错误或建议脚本的实现可能有什么问题?

注意:我在本地虚拟网站上尝试了完全相同的脚本,它可以工作。

谢谢!

【问题讨论】:

  • 可能缺少 jquery css 文件
  • 你检查过控制台,有没有报错?
  • 它说“找不到变量:$”
  • 所有库都加载在 body-tag 的底部,但我认为这就是 wordpress 总是加载它们的方式

标签: javascript jquery-ui-accordion


【解决方案1】:

如果您在控制台上收到“找不到变量:$”错误,这意味着 jQuery 未加载或与任何其他库发生冲突。

首先检查控制台上是否存在window.$window.jQuery

并尝试使用jQuery 而不是$

<script type="text/javascript">
$.noConflict();
jQuery(document).ready(function() {
        jQuery(".post-list").addClass("ui-accordion ui-accordion-icons ui-widget ui-helper-reset")
            .find("h3.entry-title")
            .addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-top ui-corner-bottom")
            .hover(function() { jQuery(this).toggleClass("ui-state-hover"); })
            .click(function() {
              jQuery(this)
                .toggleClass("ui-accordion-header-active ui-state-active ui-state-default ui-corner-bottom")
                .next().toggleClass("ui-accordion-content-active").slideToggle();
              return false;
        })
        .next()
        .addClass("ui-accordion-content  ui-helper-reset ui-widget-content ui-corner-bottom")
        .hide();

        var d= 0;
        jQuery('.post').each(function() {
            jQuery(this).delay(d).fadeIn(300);
            d += 100;
        });
});

【讨论】:

  • 对不起,我没有得到window.$ 等的部分,我尝试了代码,但它仍然没有工作。如果我将原始代码放在一个单独的 .js 文件中,并使用 array('jquery') 将其排入 functions.php 中,它就可以工作。但我还是不明白为什么它以前有效?
  • 试试this 可能有用。正如您所说,您的脚本代码在加载 jQuery 之前工作。除了this 之外,似乎没有任何方法可以在 jQuery 加载后使非文件 js 代码工作
  • 我想我会坚持使用单独的 JS-File 的方法,这似乎是最安全的方法。但是感谢您的帮助和 wind.onload 解释!
猜你喜欢
  • 1970-01-01
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多