首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IE8:无法删除'eq(...).data(...);错误

IE8:无法删除'eq(...).data(...);错误
EN

Stack Overflow用户
提问于 2013-06-15 04:39:26
回答 2查看 175关注 0票数 0

我们有一个庞大的系统,事件函数到处都是绑定和解绑的,其中一些是由第三方库实现的。我有一个选择器,在添加正确的绑定之前,我需要删除所有现有绑定。(我知道,这不是一个好的做法,但在这种情况下,这是唯一的方法。)代码在任何地方都可以完美地运行,除了IE8,在那里我得到了错误"cannot delete 'eq(...).data(...);“

下面是代码;有没有办法在IE8中实现这一点?

代码语言:javascript
复制
   $('#reg-phone').keyup( function() { 
        if( typeof $('#reg-phone').eq(0).data('events') != 'undefined' ) {
            delete $('#reg-phone').eq(0).data('events');
        }
        $(this).data('placeholder', '');
        var tmp = $(this).val().replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3');
       $(this).val(tmp);
    });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-15 04:43:40

代码对delete所做的事情不是一个好主意。要删除数据,应改用removeData

代码语言:javascript
复制
$('#reg-phone').eq(0).removeData('events');

但这里还有其他一些奇怪的东西:

  • .eq(0)是用来干嘛的?您使用的是id选择器,因此最多只能返回一个元素。
  • 为什么不直接使用.off删除事件处理程序并处理数据?
票数 0
EN

Stack Overflow用户

发布于 2013-06-15 04:55:52

代码语言:javascript
复制
   $('#reg-phone').keyup( function() { 
        $('#reg-phone').off();
        $(this).data('placeholder', '');
        var tmp = $(this).val().replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3');
       $(this).val(tmp);
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17116898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档