Невозможно удалить атрибут стиля в Chrome - PullRequest
0 голосов
/ 25 августа 2011

У меня проблемы с удалением стилей из моего диапазона в Chrome. К нему могут быть применены различные стили, поэтому мне нужно просто удалить его. Вот пример проблемы,

jsfiddle * требуется хром

Кажется, removeAttr('style') не удаляет тег стиля. Когда вы открываете панель отладки и выделяете диапазон, он начинает работать отлично.

Кто-нибудь знает, почему стиль не удаляется и как его удалить?

Ответы [ 7 ]

5 голосов
/ 25 августа 2011

Вместо того, чтобы пытаться удалить его, как насчет его сброса?

$("#someElement").attr("style","");
3 голосов
/ 26 августа 2011

Я решил попробовать одну вещь.Изменение версии JQuery на 1.5.2, и она отлично работает в Chrome.Похоже, это ошибка в последней версии JQuery.Я предлагаю вам просто использовать 1.5.2, если вы можете сойти с рук, или посоветовать пользователям Chrome сменить браузер.Вы также можете сделать это:

 } else {
   $('#s').attr('style');
   $('#s').removeAttr('style');    
 }

вместо этого:

 } else {
   $('#s').removeAttr('style');    
  }

для небольшого исправления ошибки / взлома.

http://jsfiddle.net/pjabT/7/

2 голосов
/ 25 августа 2011

Я не уверен, почему атрибут не удаляется, применима ли функция .removeAttr () для "style"?

Во всяком случае, я всегда подхожу к этому по-другому. Использовал код вашего 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', '');   

, где я просто установил значение атрибута стиля в ''

2 голосов
/ 25 августа 2011

.style вероятно заблокирован из-за его связи с CSS.

Вы можете получить тот же эффект, просто очистив его с помощью

$('#s').attr('style','');
0 голосов
/ 03 ноября 2011

С вами все в порядке, вроде.Проблема заключается в Webkit с element.removeAttribute ('style'), который не работает согласованно.Что теперь делает jQuery (1.6.4), который, вероятно, был здесь исправлен: http://bugs.jquery.com/ticket/9699 сначала устанавливает атрибут style в ничего с помощью element.setAttribute ('style', ''), а затем удаляет его, что, кажется, решает эту проблему.

0 голосов
/ 25 августа 2011

Я все еще работаю над этим, но вот быстрое исправление:

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);

ОБНОВЛЕНИЕ: Интересно отметить, что этот код работает:

vart = true;

setInterval(function(){
t = !t;
  if(t){
    $('#s').css({color: 'rgb(255, 0, 0)'});
  } else {
     $('#s').attr('style');
     $('#s').removeAttr('style');    
 }
}, 1000);
0 голосов
/ 25 августа 2011

С помощью css вы устанавливаете значения css для этого диапазона, а не атрибута

так что вам нужно просто изменить ваш скрипт на этот

var t = true;

setInterval(function(){
    t = !t;
    if(t){
        $('#s').attr('style', "color: rgb(255, 0, 0)");
    } else {
        $('#s').removeAttr('style');    
    }
}, 1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...