IE7 / IE8 Ошибка JavaScript в jQuery .remove () - PullRequest
1 голос
/ 22 мая 2011

Все работает в Firefox / Chrome / и т. Д. но в IE7 и IE8 я получаю сообщение об ошибке в функции jQuery .remove () (v = 1.5.2). Ошибка IE:

Object does not support this property or method.

Элемент списка генерируется с помощью jQuery с использованием следующего кода:

var add_term = $(this).text();
var new_list_element = $('<li><span><input name="med[' + count + ']" class = "new_med_field" value="' +add_term +'" readonly="readonly"></span></li>').hide();
$('div#create_right form ul').append(new_list_element);

Затем я пытаюсь удалить тот же элемент (при нажатии), используя следующее:

var $tgt ='';
$('#create_right form').click(function(event){
    $tgt = $(event.target);
    //Remove different portions depending on which element is selected
    if ($tgt.is('li') || $tgt.is('span') || tgt.is('input[class="new_med_field"]')) {
        $tgt.closest('li').remove();
        count--;        
    }
});

Ссылка на сайт: http://refillwizardstage.heroku.com/refill/create

Ответы [ 3 ]

2 голосов
/ 23 мая 2011

Я бы хотел сказать, что это ошибка.В sizzle есть необработанное исключение, это происходит только в браузерах, не поддерживающих querySelectorAll (например, IE7 или IE8 + в режиме совместимости).

Атрибут-обработчик для типа получает аргумент, который не является элементом-узлом (в данном случае это DOMDocumentFragment, выглядит как копия удаленного узла, у которого нет метода getAttribute).

Пока ваша функция работает так, как ожидалось, вы можете поймать эту ошибку.

Поместите это сразу после встроенного файла jquery.js:

<script>
 jQuery.find.selectors.attrHandle.type=function( elem ) {   
       try{return elem.getAttribute( "type" );}catch(e){return'';}
    }
</script>

(OfКонечно, это не совсем правильный способ, но я не могу сказать вам, почему происходит этот вызов с DocumentFragment, может быть, кто-то другой узнает об этом)

1 голос
/ 23 мая 2011

Я думаю, проблема в том, что вы используете event.target.Попробуйте использовать $tgt = $(this) или var crossBrowserTarget = event.target ? event.target : event.srcElement; $tgt = $(crossBrowserTarget);

0 голосов
/ 22 октября 2012

например:

! [Введите описание изображения здесь] [1]

с "$ ('. Item'). Remove ();"это не очень хорошо работает, но используйте "$ ('# bgright'). children (). remove ();"Это потому, что IE8 или lt не поддерживают querySelectorAll хорошо. Но он поддерживается в некоторых особых ситуациях.

enter code here:<section id="bgright">
                      <div class="item"></div>
                      <div class="item"></div>
                </section>
...