Javascript WordPress插件中的jQuery冲突-jQuery与WordPress核心
我有一个自定义开发的WordPress插件,它使用的是jQuery1.4,由于某些原因,它与WordPress js代码的核心相冲突。。。不确定,但我认为它也是jQuery,不是吗 无论如何,我假设我使用的是这个名为“anytime.js”的datepicker脚本,但是调试后发现,在删除插件中指向“anytime.js”的链接后,冲突仍然在发生,但最终在我删除了指向jquery.1.4.min.js的链接后解决了 那么,对于如何避免冲突,有什么想法吗?是基于WordPress jQuery,这是原因还是其他原因 以下是插件中的相关代码:Javascript WordPress插件中的jQuery冲突-jQuery与WordPress核心,javascript,jquery,wordpress,Javascript,Jquery,Wordpress,我有一个自定义开发的WordPress插件,它使用的是jQuery1.4,由于某些原因,它与WordPress js代码的核心相冲突。。。不确定,但我认为它也是jQuery,不是吗 无论如何,我假设我使用的是这个名为“anytime.js”的datepicker脚本,但是调试后发现,在删除插件中指向“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>
function datepicker_header(){
$theme_dir=get_bloginfo('wpurl')。/wp content/plugins/postevents/js/';?>
尝试:
尝试:
请参阅有关向Wordpress正确添加脚本的链接:
是的,Wordpress使用JQuery来实现它的一些功能…请参阅有关向Wordpress正确添加脚本的链接:
是的,Wordpress使用JQuery实现某些功能…此代码将检查JQuery是否已加载…如果尚未加载,则加载它(此代码从Google代码加载-如果您愿意,可以将URL更新为本地文件)
但是,我必须注意,只有在另一个可能的jQuery实例之后加载时,这才有效(不能保证jQuery实例以后不会加载,除非它执行相同的检查)
这在有时候加载jQuery的情况下非常有用,无论发生什么情况,您都需要始终加载它。在这种情况下,请将此代码放在原始代码加载后的某个位置,但在使用任何jQuery功能之前
还有一件事:我有时候WordPress对jQuery代码中的$很挑剔。你只需在需要$的地方键入“jQuery”(或执行查找/替换)而不是$。此代码将检查jQuery是否已加载…如果尚未加载,则加载它(此代码从Google代码加载-如果愿意,可以将URL更新为本地文件)
但是,我必须注意,只有在另一个可能的jQuery实例之后加载时,这才有效(不能保证jQuery实例以后不会加载,除非它执行相同的检查)
这在有时候加载jQuery的情况下非常有用,无论发生什么情况,您都需要始终加载它。在这种情况下,请将此代码放在原始代码加载后的某个位置,但在使用任何jQuery功能之前
还有一件事:我有时候WordPress对jQuery代码中的$很挑剔。您只需键入“jQuery”(或执行查找/替换)就可以解决这个问题你能详细解释一下你的脚本是如何失败的吗?你怎么认为这是一个冲突?以及什么-原型和jQuery之间的冲突?另请参阅我的编辑…哈!我输入的速度很慢。所以…在包含有问题的行之后,在最终的源代码中只包含一个版本的jQuery?请参阅上面是@Matthew的回答。他演示了如何在jQuery尚未加载的情况下加载jQuery,从而解决了冲突。我知道这是我想要的,但不确定如何实现它!作为记录,您的观察是100%正确的,因为我发现我实际上需要您的修订以及@Matthew的修订才能获得代码w工作正常。你能详细解释一下你的脚本是如何失败的吗?你如何判断这是一个冲突?以及什么-原型和jQuery之间的冲突?另请参阅我的编辑…哈!我正在缓慢地键入。所以…在包含了有问题的行之后,你在最终的源代码中只包含了一个版本的jQuery?请参阅上面的@Matthew回复。他演示了如何在jQuery尚未加载的情况下加载它,从而解决了冲突。我知道这是我想要的,但不确定如何实现它!记录在案,您的观察是100%正确的,因为我发现我实际上需要您的修订版和@Matthew的修订版才能使代码正常工作。就是这样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')?>' } );
});
(function($){
//... your plugin, etc. here
})(jQuery);
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);
}