使用 jquery.colorbox 时遇到的作用域问题,虽然解决了但没弄明白

2014-02-07 01:17:33 +08:00
 miniwade514
我感到奇怪, $ 和 window.$ 不是同一个东西?
https://gist.github.com/8848273
4608 次点击
所在节点    JavaScript
11 条回复
emric
2014-02-07 04:00:40 +08:00
例一传进去的对象并不包括$.
$在window身上但没有在当前作用域声明, 使用$前应该`var $=window.jquery`.
---
组织了语言几分钟, 好像还是不能够很清晰的表达出来... (泪)
bombless
2014-02-07 09:29:23 +08:00
目测楼主是两次引入一个全局的$变量…
按这个思路检查一下吧…
sapjax
2014-02-07 11:47:48 +08:00
目测楼主是在my.js中的某个位置(你调用colorbox()之前),重新给$变量赋值了,否则不应该出现这种情况
kevinkim
2014-02-07 13:18:34 +08:00
@emric +1
lz传递的是window对象而已,并没有$,如果非得只传个window,那么里面请用window.$(function(){...})
zzNucker
2014-02-07 17:39:09 +08:00
你应该是更改过$变量了,否则jquery应该是会把$主动写到全局变量里去的。
miniwade514
2014-02-08 11:27:18 +08:00
@sapjax my.js里面没有对$赋值,就直接拿来用的。但是这之前引用了jquery.colorbox.js ,它只是插件,应该不会给$ 赋值啊。
miniwade514
2014-02-08 11:37:11 +08:00
@emric 我以为全局的 $ 不用声明啊,那两段代码的区别就是有没有把全局的 $ 传进去,全局的我以为不传也能用啊。。
我语言组织得也很吃力。。-_-#
sapjax
2014-02-08 14:35:06 +08:00
@miniwade514 如果是在my.js外改写了$的话,那么你传全局的$进去,也没有用的,所以从你的代码片段来看,一定是在my.js中对$进行了赋值
miniwade514
2014-02-08 22:14:57 +08:00
sapjax
2014-02-09 09:49:49 +08:00
@miniwade514 额,那就不清楚了,按理说jquery.colorbox.js引入之后,$.fn就有了colorbox方法,如果后面没改写的话,应该不会出现你的报错。
或者在jquery.colorbox.js引入到页面ready这段时间,$可能被改写,colorbox方法可能被删除,但是这种情况,你传$进去,也是解决不了的啊...
FrankFang128
2014-02-09 12:38:37 +08:00
你 console.log($===window.$)不就知道了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/99172

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX