Событие изменения jQuery с переменной, присвоенной функции, не работает в IE11

#jquery #internet-explorer-11

#jquery #internet-explorer-11

Вопрос:

У меня есть функция, которая хорошо работает во всех браузерах, но не в IE11. Это вызывает функцию, назначенную переменной:

 var getStuff = function() {
        alert('getting stuff'); 
        ...
}
  

И вот вызов, который, похоже, не работает в IE.

 $('form input[name!="stuff"]').change(getStuff);
  

Что дает? Я пробовал альтернативные варианты, такие как использование .on («изменить» …), но безуспешно. Есть предложения?

Комментарии:

1. Ваш код, как предусмотрено (следовательно, с оговорками), отлично работает в IE11, только что протестировал его; но не могу предоставить скрипку / перо, поскольку IE11 слишком устарел. Итак: есть ли у вас какие-либо ошибки консоли? Вы запускаете свой js до или после того, как HTML существует? Вы добавляете HTML динамически? Это единственный код на странице или что-то еще ломается, прежде чем оно попадет в ваш код? Работает ли это в любом другом браузере (с другим кодом / без него) редактировать вы говорите, что это так, но как насчет только этого кода. Есть много вещей, которые не работают в старом IE11, но ни одна из них не указана в вашем вопросе.

2. Вот вся html-страница, протестированная в IE11: heypasteit.com/clip/0IUYEB — скопируйте это, сохраните как новый .html на вашем сервере и откройте в IE11 — работает ли это?

3. Отличные вопросы! Я обнаружил, что это связано с другой строкой в этой функции (обозначенной многоточиями). Спасибо за ваш вклад. Я бы предпочел не использовать IE11. Оно устарело. Однако некоторые пользователи все еще используют его, и поэтому мне приходится запускать на нем что-то еще. Что-то внутри функции выходит из строя в IE11, но работает в другом месте.

Ответ №1:

Попробуйте использовать инклюзивную форму вашего селектора $('form input[name!="stuff"]') ИЛИ введите not или .filter() форму not

 $('form').find('input')
    .not('[name="stuff"]')
    .on("change", getStuff );`
  

Ответ №2:

Спасибо всем за ваш вклад. После дальнейшего изучения этого, это связано с способом создания объекта, и изменение jQuery действительно работает в IE11.

Комментарии:

1. Судя по вашему последнему комментарию и этому ответу, похоже, что вы нашли причину проблемы и возможное решение для нее. Я предлагаю вам попробовать отметить свой собственный ответ на этот вопрос через 48 часов, когда он будет доступен для пометки. В будущем это может помочь другим членам сообщества в подобных проблемах. Спасибо за ваше понимание.