0

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

这是代码;有什么办法可以在 IE8 中进行这项工作?

   $('#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);
    });
4

2 回答 2

0

代码正在做什么delete不是一个好主意。要删除数据,您应该removeData改用:

$('#reg-phone').eq(0).removeData('events');

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

  • 有什么.eq(0)用?您正在使用 id 选择器,因此您最多只能返回一个元素。
  • 您为什么不直接使用.off删除事件处理程序并直接处理数据?
于 2013-06-14T20:43:39.573 回答
0
   $('#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);
    });
于 2013-06-14T20:55:52.413 回答