我们有一个庞大的系统,事件函数到处都是绑定和解绑的,其中一些是由第三方库实现的。我有一个选择器,在添加正确的绑定之前,我需要删除所有现有绑定。(我知道,这不是一个好的做法,但在这种情况下,这是唯一的方法。)代码在任何地方都可以完美地运行,除了IE8,在那里我得到了错误"cannot delete '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);
});发布于 2013-06-15 04:43:40
代码对delete所做的事情不是一个好主意。要删除数据,应改用removeData:
$('#reg-phone').eq(0).removeData('events');但这里还有其他一些奇怪的东西:
.eq(0)是用来干嘛的?您使用的是id选择器,因此最多只能返回一个元素。.off删除事件处理程序并处理数据?发布于 2013-06-15 04:55:52
$('#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);
});https://stackoverflow.com/questions/17116898
复制相似问题