【问题标题】:IE 7 jquery bind and $(this)IE 7 jquery 绑定和 $(this)
【发布时间】:2012-05-07 16:32:24
【问题描述】:

我有 treeview 脚本,其中一部分看起来像:

root.find("." + classControl).each(function () {
    $(this).bind('click', function () {
        if ($(this).text() == "-") {
            $(this).text("+");
        }
        else {
            $(this).text("-");
        }
        $(this).parentsUntil("li").parent().children("ul").toggle();
    });
});

它应该找到所有折叠/显示按钮并将它们绑定到适当的功能。它适用于 FF、Chrome、IE 8,但不适用于 IE7。当我单击按钮时,它会从 + 变为 - 或相反,但它也会将所有其他按钮设置为空文本。

我认为问题一定出在 this 选择器上,因为如果我只绑定简单的 alert(),它甚至在 IE7 中也可以工作

【问题讨论】:

  • 您是否考虑过使用 $this.on 而不是 $this.bind。以下是差异的细分:elijahmanor.com/2012/02/…。如果您的选择器仍然不正常,这可能无济于事。
  • 这是您当前代码的一个小优化,尽管我没有看到任何会导致您看到的 IE7 问题的东西。 jsfiddle.net/Y8Q7p/1 它也使用事件委托,因为您的所有控件都有一个共同的根。
  • @KevinB:令人印象深刻的优化。
  • 谢谢,IE 很奇怪,因为当按钮消失并且我调整窗口大小时,它们又出现了。没看懂
  • 你能为此创建一个 jsfiddle 吗?它可能实际上是一个 css 问题而不是 jquery。

标签: javascript jquery


【解决方案1】:

您想强制 IE7 重新绘制您的对象 - 如果您调整屏幕大小,它会执行此操作。有多种方法可以做到这一点,但据称有一种方法与您的情况非常相似:When does IE7 recompute styles?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 2020-01-15
    • 1970-01-01
    • 2011-11-30
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多