【问题标题】:jQuery not working in Wordpress 3.5jQuery 在 Wordpress 3.5 中不起作用
【发布时间】:2013-01-11 23:57:53
【问题描述】:

所以我似乎对我的旧 Wordpress 主题之一有疑问。我刚刚把我的一个主题从黑暗中拿出来用作我的作品集,并立即意识到我的 jQuery 侧边栏已经完全停止工作,我不知道为什么。现在请注意,我在 WordPress 实现他们自己的“自定义”侧边栏实现之前编写了这段边栏代码(所以我非常不确定这是否与此相关,但非常怀疑它。我想我是在 Wordpress 3.1 左右开发的) .出错的具体代码在这里

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.js" type="text/javascript"></script>
<script type="text/javascript" src="js/sliding_effect.js"></script> <!-- code for jquery menu -->

<?php wp_head(); ?>  

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript">

$(document).ready(function()
{
    $(".button-slide").click(function()
    {
        $("#slide-panel").slideToggle("slow");
    });
});

</script>

</head>  

我知道 jQuery 版本已经过时,但即使在更新之后我仍然没有成功。有没有人知道我做错了什么。如果需要,我会很乐意提供更多代码。以上所有内容都位于我的主题中的 header.php 文件中。

这是实现的一部分

<ul id="sliding-navigation">

<br/>




<!-- Panel -->

<li class= "sliding-element"><a href="http://www.facebook.com/pages/TheEntertainmentArt/208687212498902" target="_TOP" " title="TheEntertainmentArt">Join Us On Facebook!</a></li>

     <li class="sliding-element"><h3>Menu</h3></li>

     <li class="sliding-element"><a href= "http://theentertainmentart.info/category/ps3">Playstation 3</a></li>
     <li class="sliding-element"><a href= "http://theentertainmentart.info/category/360">Xbox 360</a></li>
     <li class="sliding-element"><a href= "http://theentertainmentart.info/category/wii">Wii</a></li>
     <li class="sliding-element"><a href= "http://theentertainmentart.info/category/film">Film</a></li>
     <li class="sliding-element"><a href= "http://theentertainmentart.info/category/music">Music</a></li>
     <li class="sliding-element"><a href= "http://theentertainmentart.info/category/art">Art</a></li>
     <li class="sliding-element"><a href= "http://theentertainmentart.info/category/coding">Coding</a></li>
      <li class="sliding-element"><a href= "http://theentertainmentart.info/category/uncategorized">Misc</a></li>

还有一些 CSS

  #navigation-block {
        position:relative;
        /*top:100px;
        left:100px;*/
    }

    #hide {
        position:absolute;
        top:30px;
        left:-190px;
    }

    ul#sliding-navigation
    {

        list-style: none;
        /*font-size: .75em;*/
        font-size: 1em;
        /*margin: 30px 0;*/
        padding: 0;
        width: 175px;



    }
ul#sliding-navigation li.sliding-element h3,
ul#sliding-navigation li.sliding-element a
{
    display: block;
    width: 175px;

    padding: 5px 10px;
    margin: 0;
    margin-bottom: 5px;
    /* corner code */
    /*border-bottom-right-radius: 50px;
    border-top-right-radius: 50px;
    border-top-left-radius: 50px;
    -moz-border-radius-topright: 50px;
    -moz-border-radius-topleft: 50px;
    -moz-border-radius-bottomright: 50px;*/
    -moz-border-radius: 1em 4em 1em 4em;
    border-radius: 1em 4em 1em 4em;
    border: outset;


}

sliding_effect.js

$(document).ready(function()
{
    slide("#sliding-navigation", 25, 15, 150, .8);
});

function slide(navigation_id, pad_out, pad_in, time, multiplier)
{
    // creates the target paths
    var list_elements = navigation_id + " li.sliding-element";
    var link_elements = list_elements + " a";

    // initiates the timer used for the sliding animation
    var timer = 0;

    // creates the slide animation for all list elements 
    $(list_elements).each(function(i)
    {
        // margin left = - ([width of element] + [total vertical padding of element])
        $(this).css("margin-left","-180px");
        // updates timer
        timer = (timer*multiplier + time);
        $(this).animate({ marginLeft: "0" }, timer);
        $(this).animate({ marginLeft: "15px" }, timer);
        $(this).animate({ marginLeft: "0" }, timer);
    });

    // creates the hover-slide effect for all link elements         
    $(link_elements).each(function(i)
    {
        $(this).hover(
        function()
        {
            $(this).animate({ paddingLeft: pad_out }, 150);
        },      
        function()
        {
            $(this).animate({ paddingLeft: pad_in }, 150);
        });
    });
}

【问题讨论】:

  • 您是否遇到任何控制台错误?
  • 我目前正在使用 Dreamweaver (CS5)。据我所知,我不相信有控制台输出。我有什么特别需要寻找的吗?
  • 因此,如果您使用的是 Firebug、Chrome 开发者工具等(如果不是的话),您可以使用 javascript 控制台,它会显示任何 javascript 错误。只是想知道您是否收到 javascript 错误。
  • 在您选择的浏览器中按 F12。单击控制台选项卡。报告您看到的任何错误:)
  • 就在你说我去网站控制台之前。这是我得到的错误: ReferenceError: Can't find variable: $ 错误引用了开始这个 $(document).ready(function(){ $(".button-slide").click(function (){ $("#slide-panel").slideToggle("slow"); }); }); 或者换句话说我的 jQuery 的开始

标签: javascript jquery wordpress themes wordpress-theming


【解决方案1】:

您确定在同一页面上包含 2 个不同版本的 jQuery 不会导致任何问题吗?

WordPress 附带的 jQuery 版本(可能会在您调用 wp_head(); 时包含在内)以无冲突模式加载。这是解释here

基本上你需要用

包装你的脚本
jQuery(document).ready(function($) {
  // $() will work as an alias for jQuery() inside of this function
});

【讨论】:

  • 如果你看上面,我实际的sliding_effect代码就在里面。 $ 而不是 jQuery 可能会导致冲突吗?也许我只是不完全理解你在说什么。你能告诉我上面的参考代码是什么意思吗?
  • 还要注意函数 ($) 中的美元符号。请参阅我发布的链接,它包含许多其他类型的包装器功能,可能适合您的需求。编辑:慢读
  • @TheGamingArt - 根据您之前收到错误的评论:“ReferenceError:找不到变量:$”,那么是的,它是 $。将 $ 更改为 jQuery 并查看是否有效。
  • 我必须试一试并修改所有内容。我的第一枪没有任何作用。在历史的某个时刻,我似乎抛弃了 jQuery,因为它给我带来了问题。不知道为什么会这样……嗯……不像它应该的那么简单。
  • 我的第一个建议是不要包含多个 jQuery 实例,这会导致问题,并且过多的调用是客户端的开销。检查您生成的源代码,看看您是否可以找到多个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 2014-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多