<script src="jquery.js"></script> | |
<script src="jquery.colorbox.js"></script> | |
<script> window.colorbox_css_url = "path/to/colorbox.css"; </script> | |
<script src="my.js"></script> | |
上面的 HTML 代码都是在 PHP 里面 echo 出来的。 | |
第3行可能和问题无关,但是我不确定,所以也贴出来了。写第3行是因为: | |
我要在 my.js 里面把 <link href="path/to/colorbox.css"/> 添加到 head 里, | |
但是用相对路径就出错,我就把绝对路径用 PHP 输出在 HTML 里面了,然后绑在 window 上。 |
//------------------------ | |
'注释颜色太淡了。。。'; | |
'一开始 my.js 大概是这样的,然后控制台就返回了错误如下:'; | |
"Uncaught TypeError: Object [object Object] has no method 'colorbox' "; | |
//------------------------ | |
;(function( window ){ | |
$(function(){ | |
$('.colorbox-images').colorbox(); | |
}); | |
})( window ); |
//---------------------------- | |
'后来我把 my.js 改成了这样,就没报错了'; | |
//---------------------------- | |
;(function( window, $ ){ | |
$(function(){ | |
$('.colorbox-images').colorbox(); | |
}); | |
})( window, $ ); |
![]() |
1
emric 2014-02-07 04:00:40 +08:00
例一传进去的对象并不包括$.
$在window身上但没有在当前作用域声明, 使用$前应该`var $=window.jquery`. --- 组织了语言几分钟, 好像还是不能够很清晰的表达出来... (泪) |
![]() |
2
bombless 2014-02-07 09:29:23 +08:00
目测楼主是两次引入一个全局的$变量…
按这个思路检查一下吧… |
![]() |
3
sapjax 2014-02-07 11:47:48 +08:00
目测楼主是在my.js中的某个位置(你调用colorbox()之前),重新给$变量赋值了,否则不应该出现这种情况
|
4
kevinkim 2014-02-07 13:18:34 +08:00
@emric +1
lz传递的是window对象而已,并没有$,如果非得只传个window,那么里面请用window.$(function(){...}) |
![]() |
5
zzNucker 2014-02-07 17:39:09 +08:00
你应该是更改过$变量了,否则jquery应该是会把$主动写到全局变量里去的。
|
![]() |
6
miniwade514 OP @sapjax my.js里面没有对$赋值,就直接拿来用的。但是这之前引用了jquery.colorbox.js ,它只是插件,应该不会给$ 赋值啊。
|
![]() |
7
miniwade514 OP @emric 我以为全局的 $ 不用声明啊,那两段代码的区别就是有没有把全局的 $ 传进去,全局的我以为不传也能用啊。。
我语言组织得也很吃力。。-_-# |
![]() |
8
sapjax 2014-02-08 14:35:06 +08:00
@miniwade514 如果是在my.js外改写了$的话,那么你传全局的$进去,也没有用的,所以从你的代码片段来看,一定是在my.js中对$进行了赋值
|
![]() |
9
miniwade514 OP |
![]() |
10
sapjax 2014-02-09 09:49:49 +08:00
@miniwade514 额,那就不清楚了,按理说jquery.colorbox.js引入之后,$.fn就有了colorbox方法,如果后面没改写的话,应该不会出现你的报错。
或者在jquery.colorbox.js引入到页面ready这段时间,$可能被改写,colorbox方法可能被删除,但是这种情况,你传$进去,也是解决不了的啊... |
![]() |
11
FrankFang128 2014-02-09 12:38:37 +08:00 via Android
你 console.log($===window.$)不就知道了
|