2011-05-11 111 views
1

我使用这个代码,这个插件http://unwrongest.com/projects/defaultvalue/jQuery.noConflict()在另一个脚本

// <![CDATA[ 
    $.noConflict(); 
    jQuery(document).ready(function(){ 
     jQuery('.defaultval').defaultValue(); 
    }); 
// ]]> 

$.noConflict();是给我$ is not a function在另一个脚本在此行

$("#city").autocomplete({ 

“自动完成导致错误“是为jQuery UI自动完成插件http://jqueryui.com/demos/autocomplete/#remote-jsonp

我该如何解决这个问题?删除$.noConflict();似乎解决了它,但我想离开,因为我认为这是有原因的。

回答

3

noConflict函数删除jQuery的$别名,以允许其他库替代使用$

jQuery.noConflict(); 

编辑:

你不能使用$,除非你写(function($) { ... })(jQuery);

+0

嗯,我看..但什么其他的库会使用它? HTML 5也许?该插件是HTML 5支持的占位符的后备。 – CyberJunkie 2011-05-11 18:02:18

+1

HTML5是一组松散相关的浏览器标准,而不是库。像Prototype这样的库使用'$'。 – SLaks 2011-05-11 18:15:33

+0

谢谢!我想我可能会完全删除noConflict,因为我没有使用任何其他脚本。 – CyberJunkie 2011-05-11 19:46:26

0

改变它包裹在自己的$别名功能代码的代码中使用noConflict后重新阅读你的问题。这不会解决任何问题。这没东西看。

2

您需要把自动完成在它自己的私有封闭:

var jQueryVariableForMyUseOnly = jQuery.noConflict(); 

(function($){ 

    $(...).autocomplete(...); 

})(jQueryVariableForMyUseOnly); 
+0

难道你不能只使用'})(jQuery)'? noConflict只会删除$别名,而不是jquery本身。 – 2011-05-11 18:15:08

+1

是的,你可以,我只是找到这个清洁工。 – jerone 2011-05-11 18:17:01

2

只是改变这一点:

$("#city").autocomplete({ 

这样:

jQuery("#city").autocomplete({ 

noConflict消除了对$别名但jQuery仍然存在。

编辑:另外,您也可以将别名分配给别的东西,比如:

$j = $.noConflict(); 
$j("#city").autocomplete({ 
相关问题