【发布时间】:2012-10-05 12:18:41
【问题描述】:
当涉及到 Firefox 16.0.1 时,我最近在 jQuery 1.4.1 中遇到了一个非常奇怪且非常糟糕的错误。其他所有浏览器都很好。旧版本的 Firefox 很好,新版本的 jQuery 很好。
我有一个带有一些复选框的表格,看起来像这样:
<table class="EntityTable">
<tbody>
<tr>
<td>
<input type="checkbox" class="IdCheckBox" id="Checkfor654100" name="Checkfor654100" itemId="654100" />
</td>
</tr>
<tr>
<td>
<input type="checkbox" class="IdCheckBox" id="Checkfor654101" name="Checkfor654101" itemId="654101" />
</td>
</tr>
<tr>
<td>
<input type="checkbox" class="IdCheckBox" id="Checkfor654102" name="Checkfor654102" itemId="654102" />
</td>
</tr>
<tr>
<td>
<input type="checkbox" class="IdCheckBox" id="Checkfor654103" name="Checkfor654103" itemId="654103" />
</td>
</tr>
</tbody>
</table>
在 javascript/jquery 中我循环并收集所有 itemIds
var ids = new Array();
$('input.IdCheckBox:checked').each(function(){
var thisBox = $(this);
ids.push(thisBox.attr('itemId'));
});
在 Firefox 16.0.1 中,ids 由页面的 url 填充。 /theId 喜欢:http://blahblahblah.com/654101
我只需将其更改为即可解决此问题:
ids.push(thisBox.attr('itemid'));
但是,我想知道为什么会发生这种情况,以及是否有其他任何事情受此影响。
这是一个 JS Fiddle,它展示了这个问题的全部荣耀: http://jsfiddle.net/K8jRf/8/
谢谢!
【问题讨论】:
-
解决方案:不要使用旧版本的jQuery....
-
我有一个解决方案,我发布了。它并不总是像“不要使用旧版本”那么简单,我维护一个可能有 5000 多行 javascript/jquery 的应用程序。并且有很多重大更改只是一时兴起更新到新版本的 jquery。
-
较新的版本很可能不会破坏您的代码,除非它本身存在问题。
-
它会,整个 .attr 与 .prop 的事情,并且 ajax 的工作方式发生了一些变化。
-
attr 与 prop 的问题在
1.6.1中大部分已修复。前端的 ajax 在大多数情况下仍然可以正常工作。唯一主要改变的是后端代码。
标签: jquery attributes jquery-1.4 firefox-16