jQuery 导致 UCenter Home 的脚本出错

此问题已经解决,请参考更新部分。

我使用 UCenter Home 搭建了一个网站,并且按照《利用 jQuery 显示来自 flickr feed 的相片》中的方法,在个人主页栏目下,展示我最近更新至 Flickr 的相片。相片的展示没有问题,但是伴随而来的却是 UCenter Home 的某些功能无法使用,例如留言。

粗略地看了一下错误提示,推测产生错误的原因是 $() 函数。

在 jQuery 中,$() 是它的核心函数,用以查找匹配元素,因为参数的不同,使得它的功能非常强大。但是在 UCenter Home 中,$() 函数只是简单的简化了 document.getElementById() 这个方法。在 jQuery 中 $(“div”) 匹配的是所有的 DIV 元素,但是在 UCenter Home 中,匹配的是 id=”div” 的元素。这种差异直接导致引入 jQuery.js 后,UCenter Home 中的脚本多处出现对象未定义——因为方法被覆盖掉了,得到的已经不是一个元素,而是一类元素的集合,或者根本就没有匹配的元素。

在这种情况下,改写 jQuery.js 或者 UCenter Home 中的脚本,都是不太可行的,同时 UCenter Home 中好像也没有对于 JSON 数据格式的处理函数。我也只能寻求其它的方法。不过由此,我也想到一个问题:UCenter Home 为什么不使用 jQuery ?!

jQuery 的优秀是众所周知的,而且越来越多的 Web 应用中使用到它。UCenter Home 的开发团队如果能有效使用 jQuery ,相信也可以极大地减少代码工作量,同时增强系统的通用性。

更新

感谢活靶子的指点。我们可以通过运行 jQuery.noConflict() 来转让 $() 函数的控制权,从而解决上面提到的问题。

发表评论(1)

评论列表

  1. Gravatar Icon 使用 jQuery 实现 window.parent.document.getElementById().innerHTML - Ulysses

    2009/19/19 at 4:36 下午

    [...] 因为先前遇到的问题,所以我考虑采用 IFRAME 来隔离不同的脚本,从而实现我需要的效果。 [...]

发表评论