我有一个使用jQuery 1.4的自定义开发的WordPress插件,由于某种原因它与WordPress js代码的核心冲突...不确定,但我认为它也是jQuery,不是吗?
无论如何,我认为这是我正在使用的这个名为“anytime.js”的日期选择器脚本,但是,经过调试后发现,在将插件中的链接删除到“anytime.js”之后仍然发生了冲突,但最终解决了当我摆脱了jquery.1.4.min.js的链接......
那么,有关如何避免冲突的任何想法?是基于WordPress jQuery,这是原因还是别的什么?
以下是插件中的相关代码:
function datepicker_header(){
$theme_dir = get_bloginfo('wpurl').'/wp-content/plugins/postevents/js/';?>
<link rel="stylesheet" type="text/css" href="<?=$theme_dir?>anytime.css" />
<link rel="stylesheet" type="text/css" href="<?=$theme_dir?>ui.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type='text/javascript'></script>
<script src="<?=$theme_dir?>anytime.js" type='text/javascript'></script>
<script type="text/javascript">
$(function(){
AnyTime.picker( "startdate", { format: "%m-%d-%Y", firstDOW: 1, baseYear: '<?=date('Y')?>', earliest: '<?=date('m-d-Y')?>' } );
AnyTime.picker( "enddate", { format: "%m-%d-%Y", firstDOW: 1, baseYear: '<?=date('Y')?>', earliest: '<?=date('m-d-Y')?>' } );
});
</script>
修改
我想我可能会引起一些困惑。我应该解释功能。有一个名为“Post Events”的插件,它有一个基于jQuery的datepicker。 datepicker依赖于jQuery来运行。特定和不寻常的问题是,当插件处于活动状态时,它会导致新的WordPress 3.0可拖动菜单从WP管理面板失败。所有其他功能都有效,但是,禁用日期选择器不会导致菜单变得可拖动。相反,只删除上面代码中“/libs/jquery/1.4.2 ...”的链接会导致菜单再次变为可拖动。
编辑#2
虽然我只能指出一个正确的答案,但@Matthew以及@ polarblau 的更正都需要解决问题!
答案 0 :(得分:1)
尝试:
jQuery(function(){
AnyTime.picker( "startdate", { format: "%m-%d-%Y", firstDOW: 1, baseYear: '<?=date('Y')?>', earliest: '<?=date('m-d-Y')?>' } );
AnyTime.picker( "enddate", { format: "%m-%d-%Y", firstDOW: 1, baseYear: '<?=date('Y')?>', earliest: '<?=date('m-d-Y')?>' } );
});
通常,将使用jQuery的脚本和插件包装到自己的范围内是一种很好的做法:
(function($){
//... your plugin, etc. here
})(jQuery);
答案 1 :(得分:1)
有关向Wordpress正确添加脚本的信息,请参阅此链接: http://weblogtoolscollection.com/archives/2010/05/06/adding-scripts-properly-to-wordpress-part-1-wp_enqueue_script/
是的,Wordpress使用JQuery来实现其中的一些功能......
答案 2 :(得分:1)
此代码将检查jQuery是否已加载...然后加载它(如果尚未加载)(此代码从Google代码加载 - 如果您愿意,可以将URL更新为本地文件)。
if(typeof(jQuery)=='undefined'){
var loadjQuery = document.createElement("script");
loadjQuery.setAttribute("type","text/javascript");
loadjQuery.setAttribute("src","http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js");
document.getElementsByTagName("head")[0].appendChild(loadjQuery);
}
但是,我必须注意,只有在另一个潜在的 jQuery实例之后加载时才会有效(不能保证以后不会加载jQuery实例,除非它执行同样的检查)。
这在jQuery加载的情况下非常有用,无论如何都需要它来加载。在这种情况下,请在原始文件加载之后的某个时刻放置此代码,但在使用任何jQuery功能之前。
还有一件事:我有时候WordPress会对jQuery代码中的$进行挑剔。只需输入' jQuery '(或执行查找/替换)而不是$需要$的任何地方,您就可以解决这个问题。