2010-07-06 124 views
2

我有关于jQuery插件的快速问题,希望有人在那里有一些建议。 我正在使用一直按预期工作的jQuery插件,但在最近几天我们从jQuery 1.1.4升级到1.4.2。
大量的调试后,我能意识到,在旧插件,选择的写法如下:将jQuery插件升级到最新版本

$('img[@id&=myImage]').each ... 

一旦我们升级到jQuery的最新版本,我开始JavaScript错误如下:

uncaught exception: Syntax error, unrecognized expression: [@id&=myImage] 

正如你所看到的,选择包括“@”符号(我认为这是一个导致错误),并咨询有关的所有不同的类型选择jQuery的文档后,我没能发现这是否正确,因为它之前有效,现在它没有。

在这一点上,我必须弄清楚,如果我可以使用旧版插件与新版本的jQuery,或者如果我必须想出一个替代解决方案。

我会很感激任何建议。
感谢

+0

只需删除'@'应该这样做。但是表达式中的'&',你确定这是代码吗?它不是'^ ='或'〜='或'$ ='? – artlung 2010-07-06 19:40:43

+0

请参阅此处的当前属性选择器文档:http://api.jquery.com/category/selectors/ – artlung 2010-07-06 19:42:31

+0

是的,它是一个&符号,是的基于文档它不应该在那里,但它的工作之前,所以我做了不要质疑它。 我删除了所有“@”符号的实例,但没有出现错误,但插件根本无法使用。 – jnkrois 2010-07-06 19:44:17

回答

4

@attribute selectorsremoved in jQuery 1.3,只是把它拿出来,像这样:

$('img[id^=myImage]').each(...); 

而且我不知道什么&=就不得不提到,我想你想其他的一个attribute selectors here,可能是starts-with (^=)ends-with ($=)

+0

谢谢,那是我不知道的,我从每个选择器中删除了“@”,但这会导致插件不能一起工作。 – jnkrois 2010-07-06 19:45:40

+0

@jnkrois - 你遇到的标记是什么?如果它只是* ID,它将是'#myImage',但它必须有一个开始于,结束于,包含等的内容......如果您发布了元素标记,则会更容易分辨。 – 2010-07-06 19:47:13

+0

感谢Nick,我真的不想发表一些代码,因为我自己对此不太了解,所以我不会浪费你的时间,但是我非常感谢你的帮助。 谢谢 – jnkrois 2010-07-06 19:58:07

2

这一切归结为升级的优点和缺点。
优点进行升级是:

  1. 较新的版本,绝对有 速度/性能,也bug修复方面做了大量的改进。
  2. jQuery的新插件可能需要新版本,从长远来看,您可能从中受益。

缺点:

  1. 你需要采取一切,在新版本 打破插件的照顾。就像所讨论的那样( 我想你可以拿出 @符号,它应该可以工作)。
  2. 您正在使用多少个这样的插件,以及您的 js代码的当前大小是多少,可以使用这个 升级。 jQuery的释放 单证像thisthis可能是一个起点

你可以采取基于以上的成本和时间估计的决定。如果只有1或2个插件需要稍微调整,我会说肯定会继续升级。
但是,如果你有一打插件打破了,你将不得不重写几乎50-60%的前端代码,那么你有一个艰难的电话:)