我们有一个庞大的系统,其中事件功能被绑定和解除绑定,有些是第三方库。我有一个选择器,我需要删除所有现有的绑定,然后再添加正确的绑定。 (我知道,这不是一个好的做法,但在这种情况下这是唯一的方法。)代码在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);
});
答案 0 :(得分:0)
代码对delete
执行的操作不是一个好主意。要删除数据,您应该使用removeData
代替:
$('#reg-phone').eq(0).removeData('events');
但这里还有其他一些奇怪的东西:
.eq(0)
是什么?您正在使用id选择器,因此您最多只能获得一个元素。.off
删除事件处理程序和数据?答案 1 :(得分: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);
});