我多年来一直在使用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!
答案 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)
如果您的网站结构是这样的,那将是合乎逻辑的:
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>