0

所以我在我的网站顶部有一个链接列表,允许用户点击它们,当这个点击事件发生时,我有一个 javascript 函数,可以滚动页面上一个 div 内的一个非常大的链接列表。问题在于 IE7 以及它在触发时如何处理单击事件。我正在使用 jquery 来阻止默认操作,这在 Chrome、Safari、Firefox 和 IE 8/9 中运行良好,但在 IE7 中,浏览器正试图以默认方式使用锚点。这个锚点的 href 属性只是一个字符串,它可以帮助我识别页面下部的链接。如果我单击 IE7 中的链接,我会得到 404,但如果我点击后退按钮并再次单击链接,则脚本可以正常工作,并且事件会以正确的方式处理。我也试过

event.preventDefault ? event.preventDefault() : event.returnValue = false;

而不是 e.preventDefault() 但这对 IE7 在我的场景中处理点击事件的方式没有影响。

有什么建议么?此外,在我的页面上,我有一个选项卡式导航,如果用户当前正在查看另一个选项卡(只有 2 个选项卡),它会隐藏与该选项卡关联的数据。两个选项卡中的内容大致相同,结构完全相同,但是当我在第一个(默认)选项卡中的链接上执行导致上述错误的完全相同的过程时,IE 没有问题。

4

1 回答 1

0

事实证明,IE7 在将事件绑定到页面上隐藏的元素方面存在一些问题。或者至少这是我可以从正在发生的问题中得出的结论。我没有使用 .click 事件处理程序,而是找到了 jQuery 提供的一个名为 .on() 的方法,它取代了自 1.7 版以来已弃用的 .live() 方法。

“.on() 方法将事件处理程序附加到 jQuery 对象中当前选定的元素集。从 jQuery 1.7 开始,.on() 方法提供附加事件处理程序所需的所有功能。”

这似乎可以解决 IE7 中的问题。

于 2012-05-18T13:08:51.947 回答