WordPress和jQuery:我只是无法让jScrollPane工作! (或者,我只是无法让jQuery工作!)

时间:2012-08-29 03:51:08

标签: jquery wordpress jscrollpane

我多年来一直在使用WordPress,并且从来没有通过我的所有阅读和大量阅读,能够使任何自定义jQuery脚本工作。

今天是jScrollPane:http://jscrollpane.kelvinluck.com/。对像素完美的网页设计师来说,有史以来最好的脚本之一,必须让一切看起来都恰到好处。

我正在使用最新版本的WordPress(3.4.1)和白板框架(主题)。我没有要链接的站点,因为我正在使用XAMPP离线构建站点。

以下是我所知道的:

在我的header.php中,在我的标签内和wp_head()下面,我有以下内容:

<script type="text/javascript" src="/js/jquery.jscrollpane.min"></script>
<script type="text/javascript" src="/js/jquery.mousewheel"></script>
<link rel="stylesheet" href="/css/jquery.jscrollpane.css" />

我在主题的根目录中名为“css”的目录中有jquery.jscrollpane.css,在我的根目录中名为“js”的目录中有jquery.jscrollpane.min.js和jquery.mousewheel.js主题。

在我的footer.php正上方,我有:

<script type="text/javascript">
jQuery(function()
{
jQuery('#main').jScrollPane();
});
</script>

目前我的functions.php中没有任何内容。

我对jQuery一无所知。什么都没有,除了各种花絮我读过关于WordPress和no_conflict模式,注册和排队脚本,以及其他各种重复无数次的事情,但无论我尝试什么,它似乎都没有帮助我...

无数的阅读网站 - 数十个。无数小时...... WordPress应该在后端有一些东西让jQuery更容易。我只是非常厌倦这一切。自从我开始尝试解决这个问题后,我没有多少吃饭或休息多少没有帮助......

。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。

更新:我尝试了martinCzerwi所说的内容,将该代码添加到我的functions.php中,并删除了我的内容。我在Firebug的Web Developer中收到了一条错误消息:

"Error: TypeError: jQuery("#main").jScrollPane is not a function"

这与我网站的footer.php有关,其中包括:

<script type="text/javascript">
jQuery(function()
{
    jQuery('#main').jScrollPane('refresh');
});
</script>

我对PHP有点了解;但不足以帮助我。


我做了martinCzerwi所说的话。我把它添加到我的functions.php并删除了我的内容。将URL修复到functions.php中的文件之后,它就可以了。我终于让jQuery在WordPress网站上工作了!

非常感谢所有人,特别是martinCzerwi!

3 个答案:

答案 0 :(得分:1)

使用WordPress给定的函数我建议您不要使用带有相对路径的脚本标记,而是将其包含在functions.php中:

function theme_enqueue_scripts_and_styles () {
  // Enqueue scripts
  wp_enqueue_script('jquery-mwheel', get_bloginfo('template_url').'/js/jquery.mousewheel.js', array('jquery'));
  wp_enqueue_script('jquery-scrollpane', get_bloginfo('template_url').'/js/jquery.jscrollpane.min.js', array('jquery', 'jquery-mwheel'));

  // Enqueue styles
  wp_enqueue_style('jquery-scrollpane-style', get_bloginfo('template_url').'/css/jquery.jscrollpane.css');
}

add_action('wp_enqueue_scripts', 'theme_enqueue_scripts_and_styles');

注册此功能后,您可以从<head>删除脚本标记。该功能将自动包含您的样式和脚本,甚至可以包含jQuery,只要您在wp_head(); - 标记之前调用</head>即可。它使用绝对路径,因为当你使用不同的永久链接设置时,相对路径会断开,而不是默认路径。

答案 1 :(得分:0)

您可以将其添加到functions.php以删除任何jQuery脚本并拥有自己的..但这不会打击编码不良插件的任何硬编码包含。

function my_scripts_method() {
    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js');
    wp_enqueue_script( 'jquery' );
}    

add_action('wp_enqueue_scripts', 'my_scripts_method');

或者,您可以使用jQuery冲突模式,并将其用作:

<script type="text/javascript">
var k = jQuery.noConflict();
k(function() {
      k('#main').jScrollPane();
   });
</script>

如果任何插件依赖于包含的库,请确保页脚中有<? wp_footer(); ?>

答案 2 :(得分:0)

在我看来,你没有正确链接你没有包含jQuery本身。


如果您的网站结构是这样的,那将是合乎逻辑的:

root\wp-content\themes\your-theme

你会在那里放置一张地图放置你的JavaScript,也可能还有一张单独的地图用于其他CSS,如下所示:

root\wp-content\themes\your-theme\js
root\wp-content\themes\your-theme\css

然后,你想链接到这些,并且在你的header.php中放置这个(就像你做的那样)听起来合乎逻辑:

<script type="text/javascript" src="/js/jquery.jscrollpane.min"></script>
<script type="text/javascript" src="/js/jquery.mousewheel"></script>
<link rel="stylesheet" href="/css/jquery.jscrollpane.css" />

Wordpress具有获取样式表目录的功能。你可以用它!要回显此目录,请使用:

<?php echo get_stylesheet_directory_uri(); ?>

因此,上面的链接会导致:

<script type="text/javascript" src="<?php echo get_stylesheet_directory_uri(); ?>/js/jquery.jscrollpane.min"></script>

<script type="text/javascript" src="<?php echo get_stylesheet_directory_uri(); ?>/js/jquery.mousewheel"></script>

<link rel="stylesheet" href="<?php echo get_stylesheet_directory_uri(); ?>/css/jquery.jscrollpane.css" />

如果你使用的主题不包含jQuery本身,添加这行代码,但要确保它在任何其他JavaScript代码之前加载(只是为了确保你没有遗漏任何使用jQuery的脚本:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

通常建议先加载样式表,然后再加载脚本。所以一切都会导致这个:

<link rel="stylesheet" href="<?php echo get_stylesheet_directory_uri(); ?>/css/jquery.jscrollpane.css" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript" src="<?php echo get_stylesheet_directory_uri(); ?>/js/jquery.jscrollpane.min"></script>
<script type="text/javascript" src="<?php echo get_stylesheet_directory_uri(); ?>/js/jquery.mousewheel"></script>