【问题标题】:SetInterval in Opera causes select blinkingOpera 中的 SetInterval 导致选择闪烁
【发布时间】:2013-09-30 14:33:07
【问题描述】:

我需要对有关 jQuery Validator 显示的错误的工具提示进行分组。所以我用 setInterval 编写了一个简单的循环来检查同一行中是否有多个具有错误类的输入。

   setInterval(function() {
      $('.xrror').remove();
      $('div.row-4:has([name].error)').each(function() {
         var tmp = $('[name].error', this);
         if(tmp.length > 1) {
            $('label.error', this).hide();

            tmp.last().parent().append(
               $(document.createElement('label')).addClass('error').addClass('xrror').append(
                  $(document.createElement('span')).text('Fields with errors were marked with red color')
               )
            );
         } else {
            $('[name].error', this).parent().find('label.error').show();
         }
      });
   }, 50);

在 Opera 中,它会导致打开的 Select 元素闪烁。

【问题讨论】:

  • 您看到的“闪烁”来自.xrror 元素在很短的时间内被删除和添加。一些浏览器完全跳过渲染,但 Opera 并非如此。

标签: javascript jquery html opera setinterval


【解决方案1】:

您应该将函数绑定到提交或更改等事件上,而不是每 50 毫秒使用一次 setInterval 函数,这会消耗大量资源。由于它似乎与表单验证有关,因此除非用户修改字段,否则您无需执行任何操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 2014-03-24
    • 2012-07-23
    相关资源
    最近更新 更多