1

Я изо всех сил пытаюсь интегрировать плагин this Bootstrap-tag в свое приложение. Он отлично работает с jQuery 1.8.3, как вы можете видеть на the GitHub project page.JQuery append не работает в IE9 и JQuery 1.7.1

Мое приложение использует JQuery 1.7.1. Он отлично работает в Chrome, но не в IE (не удивительно). Я потратил два дня, пытаясь понять, почему не повезло (я новичок jQuery/JS).

Я создал jsFiddle, которая захватывает и показывает эту ошибку, когда побежал в IE 9.

Специфическая ошибка:

SCRIPT438: Объект не поддерживает свойство или метод «добавить»

бутстраповские-tag.js, строка 117 символов 5

И это относится к этой линии/код:

$('<span class="tag">') 
    .text(value) 
    .append($('<button type="button" class="close">&times;</button>') 
    .on('click', function() { 
     that.remove(that.element.siblings('.tag').index($(this).closest('.tag'))) 
    }) 
) 
    .insertBefore(that.element) 

ВОПРОС: Любая идея, почему IE9 жалуется на append не признал?

+0

Не копируйте и не вставляйте весь HTML-документ в jsFiddle. Содержимое '' переходит в раздел HTML, а JavaScript переходит в раздел JavaScript – Ian

+0

Ну, вы используете ресурсы, которые не должны использоваться таким образом. Например, файлы Github не должны упоминаться - это не CDN. К счастью, если вы измените URL-адрес сырых файлов, это возможно). Если вы используете правильные URL-адреса (мне пришлось изменить Prettify CSS и JS, а также URL-адреса Docs CSS), IE 9 не выдает ошибок. У вас не было бы этой проблемы, если бы вы загрузили файлы и использовали их в локальном проекте/сервере. Вот что я закончил с: http://jsfiddle.net/LbGfn/1/ – Ian

+0

Ах, да, я забыл изменить версию jQuery. Ну, я в замешательстве, о какой версии вы имеете в виду? Ваш вопрос говорит 1.7.3 (чего не существует), но ваш jsFiddle использует 1.7.1. Так я бы предположил 1.7.1? – Ian

ответ

2

Ну, действительно, jQuery в старых версиях не возвращает ссылку на объект jQuery после функции text() для IE9.

В основном, решение не использовало текстовую функцию и добавляло текст при создании пролета. Поэтому я изменил код ниже в bootstrap-tag.js в строке 117, который решает проблему.

Следит за JS Fiddle Solution

Перед (IE9 Buggy):

$('<span class="tag">') 
    .text(value) 
    .append($('<button type="button" class="close">&times;</button>') 
    .on('click', function() { 
     that.remove(that.element.siblings('.tag').index($(this).closest('.tag'))) 
    }) 
) 
    .insertBefore(that.element) 

После (Fixed):

$('<span class="tag">' + value + '</span>') 
    .append($('<button type="button" class="close">&times;</button>') 
    .on('click', function() { 
     that.remove(that.element.siblings('.tag').index($(this).closest('.tag'))) 
    }) 
) 
    .insertBefore(that.element) 

Надеется, что это помогает.

+0

+1! большое спасибо – GETah