Невозможно удалить атрибут стиля в хроме
У меня возникают проблемы с удалением стилей из моего диапазона в Chrome. Он может иметь кучу разных стилей, которые могут быть применены к нему, поэтому мне нужно просто удалить его whoesale. Вот пример проблемы,
jsfiddle * требуется хром
removeAttr('style')
, похоже, не удаляет тег стиля. Когда вы открываете панель отладки и выделяете диапазон, он начинает работать отлично.
Кто-нибудь знает, почему стиль не удаляется и как его удалить?
Ответы
Ответ 1
Я решил попробовать одно. Изменение версии JQuery до 1.5.2, и она отлично работает в хроме. Таким образом, похоже, что это ошибка в последней версии JQuery. Я предлагаю вам просто использовать 1.5.2, если вы можете уйти от него или посоветовать пользователям Chrome менять браузеры. Вы также можете сделать это:
} else {
$('#s').attr('style');
$('#s').removeAttr('style');
}
вместо этого:
} else {
$('#s').removeAttr('style');
}
для небольшого исправления ошибок/взлома.
http://jsfiddle.net/pjabT/7/
Ответ 2
Вместо того, чтобы пытаться удалить его, как насчет его сброса?
$("#someElement").attr("style","");
Ответ 3
.style
, вероятно, заблокирован из-за его связи с CSS.
вы можете получить тот же эффект, просто очистив его с помощью
$('#s').attr('style','');
Ответ 4
Я не уверен, почему атрибут не удаляется, является ли функция .removeAttr() применимой для "стиля"?
Во всяком случае, я всегда подхожу к этому по-другому. Используется код вашего jsFiddle, он работает следующим образом
var t = true;
setInterval(function(){
t = !t;
if(t){
$('#s').css({color: 'rgb(255, 0, 0)'});
} else {
$('#s').attr('style', '');
}
}, 1000);
Все, что я изменил, в основном это строка
$('#s').attr('style', '');
где я просто устанавливаю значение атрибута style в значение ''
Ответ 5
С помощью css вы устанавливаете значения css для этого диапазона, а не атрибута
так что вам нужно просто изменить ваш script на этот
var t = true;
setInterval(function(){
t = !t;
if(t){
$('#s').attr('style', "color: rgb(255, 0, 0)");
} else {
$('#s').removeAttr('style');
}
}, 1000);
Ответ 6
Я все еще работаю над этим, но вот быстрое решение:
var t = true;
setInterval(function(){
t = !t;
if(t){
$('#s').css('color','rgb(255, 0, 0)');
} else {
$('#s').css('color','rgb(0,0,0)');
}
}, 1000);
ОБНОВЛЕНИЕ: Интересно отметить, что этот код работает:
var t = true;
setInterval(function(){
t = !t;
if(t){
$('#s').css({color: 'rgb(255, 0, 0)'});
} else {
$('#s').attr('style');
$('#s').removeAttr('style');
}
}, 1000);
Ответ 7
Ты в порядке, вроде. Проблема заключается в Webkit с элементом element.removeAttribute('style'), который не работает последовательно.
Что теперь делает jQuery (1.6.4), которое, вероятно, было исправлено здесь: http://bugs.jquery.com/ticket/9699, сначала присваивает атрибуту style ничего атрибута element.setAttribute( 'style', ''), а затем удалите его, что, похоже, решит это.