удалить фоновое изображение из стиля
Как удалить фоновое изображение из стиля элемента. Я не хочу устанавливать его ни на один, ни на 0. Я хочу удалить его полностью. он конфликтует с moz-linear-gradient
, который определен в другом классе.
<div style="background-image:url(http://domain.com/1.jpg); width:100px" class="mozgradient"></div>
6 ответов:
Вы пробовали:
$(".mozgradient").css("background", "");
Установка фона в пустую строку должна удалить встроенный стиль таким образом, чтобы класс и другие параметры таблицы стилей вступили в силу, но это не должно влиять на другие стили, которые были установлены inline, как
width
. (В этом случае удаление его из всех элементов с классомmozgradient
предотвращает конфликт, о котором вы говорите.)Из jQuery .css () doco :
Установка значения свойства style в пустую строку-например $('#mydiv').css ('color',") - удаляет это свойство из элемента, если оно уже было непосредственно применено, будь то в атрибуте стиля HTML, через jQuery .метод css (), или через прямое манипулирование DOM свойством style.
Я не совсем уверен, что вы ищете, но я делаю предположение, что у вас есть встроенный стиль в теге div, и с помощью CSS вы пытаетесь преодолеть это.
Единственным вариантом здесь является флаг
!important
в файле css. Итак, в вашем css-файле у вас будет это:.mozgradient {background-image(whatever) !important}
Обновление:
Теперь я вижу, что вы пытаетесь сделать это через jQuery. Попробуйте это:
Хотя обратите внимание, что это будет работать только при условии, что 'width' является единственным встроенным стилем css, который вы хотите сохранить. Если бы там мог быть какой-либо встроенный стиль, вам пришлось бы прибегнуть к любому варианту CSS выше использования !важно или с помощью jQuery, захватить весь атрибут стиля и получить грязный с регулярным выражением, чтобы разобрать любые стили фонового изображения в частности.var divWidth = $yourDiv.css('width'); $yourDiv.removeAttr('style').css('width', divWidth);
ОБНОВЛЕНИЕ II:
Хорошо, основываясь на комментариях, это становится сложным. Проблема заключается в том, что может быть любое количество встроенных стилей, применяемых через атрибут
style
(тьфу! Я чувствую твою боль!) и мы только хотим очиститьbackground-image
так что мы можем позволить внешнему CSS справиться с этим.Вот еще один вариант:
// create a div and attach the class to it $testDiv = $('<div>').class('mozgradient').css('display','none'); // stick it in the DOM $('body').append($testDiv); // now cache any background image information var bgndImg = $testDiv.css('background-image'); // get rid of the test div you want now that we have the info we need $testDiv.destroy(); // now that we have the background-image information // from the external CSS file, we can re-apply it // to any other element on the page with that class // name to over-ride the inline style $('.mozgradient').css('background-image',bgndImg);
Неуклюжим, но я думаю, что это сработает.
Если вы хотите динамически удалить фоновое изображение, то используйте функцию
$("selector").css();
в jquery или inn CSS applybackground:none
Подробнее см.: http://jsfiddle.net/creativegala/um3Ez/
Обходным путем будет "сброс" свойства. В этом случае, я думаю, что следующее должно сделать трюк:
div[class="mozgradient"] { background-image: none !important; }
$(div you use).removeAttr('style')
Это должно удалить стиль
$(div you use).attr('style', 'width: 100px');
, а затем следует добавить указанный стиль только с высотой
Не уверен, что это то, что вы хотите
Лучший способ справиться с этим - на уровне HTML или в любом другом серверном скрипте, который вы используете для создания HTML. Просто пусть он не печатает атрибут стиля. Как только он там, он занимает наивысший приоритет в каскаде CSS, поэтому он перегоняет все остальное в определениях классов или идентификаторов.
Второй лучший вариант-это перегружать его после загрузки с помощью JavaScript. Вы не можете удалить его, но вы можете заменить его тем, что класс пытается передать, если вы можете добавить тег id к оно..
.mozgradient { background-image:url(http://domain.com/2.jpg); } /* will not work */ #fixedelement { background-image:url(http://domain.com/2.jpg); } /* will not work */ <div style="background-image:url(http://domain.com/1.jpg); width:100px" class="mozgradient" id="fixedelement"></div> <script type="text/javascript"> fixedelement.style.backgroundImage = 'url(http://domain.com/2.jpg)'; /* will work */ </script>