我正在尝试升级公司内大量网站的jQuery版本,从非常老旧的版本(1.2.6,1.4.3)升级到最新版本(1.9.1)。情况还算顺利——迁移脚本完成了大部分工作,尽管这只针对1.6.4到1.9.1的版本升级,我认为我已经处理了大部分需要更改的内容。
不过我遇到了几个问题,其中主要问题是从
我最初的“修复”(非常夸张的修复)是基于简单地将一种方法的调用重定向到另一种方法:
考虑到这是我注意到的唯一错误,我进行了一些尝试,并想出了一个解决方法 - http://jsfiddle.net/M92CE/1/ - 似乎可以重新引入原始功能。虽然这似乎是href属性/prop问题的相当干净的解决方案,但我不禁觉得最初的修复...离它应该有多远。
是否有任何“标准”方法可以重新引入此功能?如果没有,是否有更好的方法来实现它?
干杯。
不过我遇到了几个问题,其中主要问题是从
.attr()
更改为 .prop()
——因为我们所有的代码都使用 .attr()
,如果我们只是改用.prop(),就会有一些代码出错,特别是一些用于在商店中筛选产品的链接——这些链接会在被点击时调用AJAX请求并进行其他处理。我最初的“修复”(非常夸张的修复)是基于简单地将一种方法的调用重定向到另一种方法:
$.fn.attr = $.fn.prop;
我相信这会引入一系列的 bug,尽管它修复了最初的错误。从那时起,我只发现了一个进一步的由此引起的 bug(目前为止),即它会导致 href 属性(可能是以 # 开头的锚点)返回完整的标准化 URL - http://jsfiddle.net/eT6xE/1/
<a href="#something"><span>Product Details</span></a>
<div></div>
$('div').append( $('a').attr('href') );
$('div').append( '<br />' + $('a').prop('href') );
// #something \n http://fiddle.jshell.net/eT6xE/1/show/#something
考虑到这是我注意到的唯一错误,我进行了一些尝试,并想出了一个解决方法 - http://jsfiddle.net/M92CE/1/ - 似乎可以重新引入原始功能。虽然这似乎是href属性/prop问题的相当干净的解决方案,但我不禁觉得最初的修复...离它应该有多远。
是否有任何“标准”方法可以重新引入此功能?如果没有,是否有更好的方法来实现它?
干杯。