无法将带有jquery的类添加到datepicker

我整个上午都在苦苦挣扎,最后我决定寻求帮助。 我有一个datepicker(jquery ui),我用谷歌日历中的事件填充并相应地更改类。 到目前为止,我使用了datepicker的beforeShowDay函数,效果很好。 不幸的是,日历事件是用西class牙语编写的,所以我使用另一个函数(下面的代码)去掉了beforeShowDay函数中的所有重音字符:

function accentsTidy(s){ var r = s.toLowerCase(); non_asciis = {'a': '[àáâãäå]', 'ae': 'æ', 'c': 'ç', 'e': '[èéêë]', 'i': '[ìíîï]', 'n': 'ñ', 'o': '[òóôõö]', 'oe': 'œ', 'u': '[ùúûűü]', 'y': '[ýÿ]'}; for (i in non_asciis) { r = r.replace(new RegExp(non_asciis[i], 'g'), i); } return r; }; 

问题是我无法让IE 11使用此function。 (它不会替换任何重音字符)所以我决定采用不同的方式并添加以下行:

 if (isIE) { $('td[class*="Highlighted"]').not('td[class*="Unknown"]').each(function (index) { $(this).addClass($(this).attr('class').replace(/[áéíóúñäëïöü]/gi, 'x')); }); } 

之前我定义了函数以检查它是否是Internet Explorer 11:

 function isIE() { return ((navigator.appName == 'Microsoft Internet Explorer') || ((navigator.appName == 'Netscape') && (new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null))); } 

然而,无论代码在哪里,我都会对行提出问题(添加类的行,它不会添加任何内容。我知道这可能是因为我在某个范围可能出错的地方添加了那行,所以我我已经尝试从$(document).ready(function(){更改$(function()无效。我也将这行代码几乎放在我能想到的任何地方,例如在点击事件中当一些复选框是clicket(这是负责显示日历中的事件的那些)时触发,再次无济于事,例如,将该行代码放在下面的末尾是unsuccesfull:

 $('input:checkbox').live('click', function () { validaObjeto($(this)); //I've tried putting it here }); 

目前我在这里(在click事件中调用的函数内部):

 function validaObjeto(elem){ if (elem.val() != "semestre") { if (elem.val().indexOf(",") == -1) { var identificador = $(elem).val(); var request = gapi.client.calendar.events.get({ 'calendarId': 'cide.edu_sm151i2pdhu2371vq8hamcver4@group.calendar.google.com', 'eventId': identificador }); request.execute(function (resp) { var dateIni = new Date(resp.start.date); var dateFin = new Date(resp.end.date); diasperiodo = dateFin.getDate() - dateIni.getDate(); for (i = 0; i <= diasperiodo; i++) { datekey = new Date(); console.log(new Date(datekey.setTime(dateIni.getTime() + i * 86400000))); if ($(elem).is(":checked")) { todosEventos[$.datepicker.formatDate('yy-mm-dd', new Date(datekey.setTime(dateIni.getTime() + i * 86400000)))] = { 'summary': resp.summary, 'start': new Date(resp.start.date), 'end': new Date(resp.end.date) }; } else { delete todosEventos[$.datepicker.formatDate('yy-mm-dd', new Date(datekey.setTime(dateIni.getTime() + i * 86400000)))]; } } $('#cal').datepicker("refresh"); if (isIE) { $('td[class*="Highlighted"]').not('td[class*="Unknown"]').each(function (index) { $(this).addClass($(this).attr('class').replace(/[áéíóúñäëïöü]/gi, 'x')); }); } }); } else { evts = $(elem).val().split(","); for (i = 0; i < evts.length; i++) { var identificador = evts[i]; var request = gapi.client.calendar.events.get({ 'calendarId': 'cide.edu_sm151i2pdhu2371vq8hamcver4@group.calendar.google.com', 'eventId': identificador }); request.execute(function (resp) { var dateIni = new Date(resp.start.date); var dateFin = new Date(resp.end.date); diasperiodo = dateFin.getDate() - dateIni.getDate(); for (i = 0; i <= diasperiodo; i++) { datekey = new Date(); console.log(new Date(datekey.setTime(dateIni.getTime() + i * 86400000))); if ($(elem).is(":checked")) { todosEventos[$.datepicker.formatDate('yy-mm-dd', new Date(datekey.setTime(dateIni.getTime() + i * 86400000)))] = { 'summary': resp.summary, 'start': new Date(resp.start.date), 'end': new Date(resp.end.date) }; } else { delete todosEventos[$.datepicker.formatDate('yy-mm-dd', new Date(datekey.setTime(dateIni.getTime() + i * 86400000)))]; } } $('#cal').datepicker("refresh"); if (isIE) { $('td[class*="Highlighted"]').not('td[class*="Unknown"]').each(function (index) { $(this).addClass($(this).attr('class').replace(/[áéíóúñäëïöü]/gi, 'x')); }); } }); } } } else { if ($(elem).is(":checked")) { var inicioDeClases, finDeClases; var request = gapi.client.calendar.events.get({ 'calendarId': 'cide.edu_sm151i2pdhu2371vq8hamcver4@group.calendar.google.com', 'eventId': 'hhq29qmmaeql9ne810q3s0pips' }); request.execute(function (resp) { inicioDeClases = new Date(resp.start.date); }); var peticion = gapi.client.calendar.events.get({ 'calendarId': 'cide.edu_sm151i2pdhu2371vq8hamcver4@group.calendar.google.com', 'eventId': '52p6lv5qgmal7t1ibb2u3rbn84' }); peticion.execute(function (resp) { finDeClases = new Date(resp.end.date); unEvento = { 'summary': 'Semestre de clases', 'start': inicioDeClases, 'end': finDeClases }; $('#cal').datepicker("refresh"); }); } else { unEvento = null; $('#cal').datepicker("refresh"); } } } 

无济于事。 奇怪的是,如果我在应该添加类的代码行之前发出警报,它会显示警报(几乎在我放置该行的每个地方,我都记不清楚到底在哪里)。 当然,如果我从开发人员的控制台运行该行,它确实会按预期更改类。

所以我想问题是:¿究竟哪条线应该是为了它起作用?

或者有人可以指出为什么accentsTidyfunction在Internet Explorer中不起作用?

我知道这是一个老post,但我想告诉解决方案,我使用这个库: phpjs和函数utf8_encodeutf8_decode我让IE行为,问题是由于服务器的编码,或者浏览器,我从来没有想出实际的原因,字符被错误编码(仅在IE中),但在传递它们之前调用这些函数解决了问题。