.Css () ශ්‍රිතය සමඟ එකතු කළ ශෛලියක් ඉවත් කරන්නේ කෙසේද?


887

මම jQuery සමඟ CSS වෙනස් කරන අතර ආදාන අගය මත පදනම්ව මා එකතු කරන මෝස්තරය ඉවත් කිරීමට කැමැත්තෙමි:

if(color != '000000') $("body").css("background-color", color); else // remove style ?

මට මෙය කළ හැක්කේ කෙසේද?
වර්ණ අච්චාරුවක් භාවිතා කරමින් වර්ණයක් තෝරාගත් සෑම අවස්ථාවකම ඉහත රේඛාව ක්‍රියාත්මක වන බව සලකන්න (එනම් මූසිකය වර්ණ රෝදයක් හරහා ගමන් කරන විට).

දෙවන සටහන: මට මෙය කළ නොහැක්කේ css("background-color", "none")එය CSS ලිපිගොනු වලින් පෙරනිමි මෝස්තරය ඉවත් කරන බැවිනි .
මට අවශ්‍ය වන්නේ jQuerybackground-color විසින් එකතු කරන ලද පේළිගත ශෛලිය ඉවත් කිරීමට ය .



ඔබේ fcuntionality මත පදනම්ව addClass / removeClass වඩා හොඳ උත්සාහ කරන්න. මෙය වෙනත් මෝස්තර වලට බලපාන්නේ නැත.
ප්‍රභාකරන්

Answers:


1350

දේපල හිස් නූලකට වෙනස් කිරීම කාර්යය කරන බව පෙනේ:

$.css("background-color", "");

4
@baacke "ප්‍රමිතිය" යැයි කියනු ලබන කාලය යල් පැන ගිය එකක් වන අතර බොහෝ සංවර්ධන කාලය නාස්ති කිරීම ලැජ්ජාවකි. යල් පැන ගිය මෘදුකාංග භාවිතා කිරීමට තෝරා ගන්නා සමාගම් කෙරෙහි මට එතරම් අනුකම්පාවක් නැත, ඒවා සඳහා වැඩි කාලයක් ගත කළ යුත්තේ මන්දැයි මම නොදනිමි.
andrewb

33
මට මෙතන @baacke සමඟ යා යුතුයි. අපගේ පාරිභෝගිකයාට තවමත් IE6 (!!) හි නිල අවම අවශ්‍යතාවයක් ඇත. ගැටලුව නම්, ඔවුන්ගේ ගනුදෙනුකරුවන් අඩු සංවර්ධිත රටවල් ඇතුළුව ලොව පුරා සිටීමයි. "ගනුදෙනුකරුගේ ගනුදෙනුකරුවන්" අපගේ ගනුදෙනුකරු සමඟ ව්‍යාපාර කිරීම සඳහා ඉතා පැරණි පරිගණක භාවිතා කරයි. එබැවින් පැරණි බ්‍රව්සරයට අවම වශයෙන් අවම වශයෙන් සහය දැක්විය යුතුය, නැතහොත් ඒවා ව්‍යාපාර අහිමි වීමේ අවදානමක් ඇත ...
user1429080

8
ඔබ සේවාදායකයෙකු සඳහා සංවර්ධනය කරන ඕනෑම විසඳුමක අවශ්‍යතා සැකසීමට ඔබට නොහැකි ය. එම සේවාදායකයාට පැරණි බ්‍රව්සරයක් සඳහා සහාය අවශ්‍ය නම් හෝ අවශ්‍ය නම්, එය ලබා දීම ඔබේ කාර්යය වේ. "කවුද සැලකිලිමත්" ගැන කතා කරන ඔබ සැබෑ ඉංජිනේරුවන්ට නරක නමක් ලබා දේ.
එඩ් ඩෙගාන්

5
DEdDeGagne - ඔබ නිරන්තරයෙන් IE හි පැරණි අනුවාදයන්ට සහය දැක්වීම නැවැත්විය යුතුය. මෙය ඔබගේ කේත පදනම වැඩි දියුණු කරන අතර පැරණි IE භාවිතා නොකිරීමට අමුත්තන් පොළඹවයි. එකම දුෂ්කර දෙය නම් ඔබට සහාය ලබා දිය හැක්කේ කවදාදැයි සොයා බැලීමයි. ගූගල් වෙබ් අඩවි, විශාල අමුත්තන් සිටින, ඔවුන් පැරණි අයිඊ එකක් අතහැර දැමීමට තීරණය කළේ නම්, එය හොඳ තීරණයක් බව ඔබට විශ්වාස කළ හැකිය. එක් සමාගමක් ඔවුන්ගේ පරිශීලකයින්ට ඔවුන්ගේ දුරස්ථ IE කේතය දිගටම පවත්වා ගෙන යාමට වඩා නවීන පරිගණකයක් මිලදී ගැනීම සඳහා වැඩි මුදලක් ගෙවන බව පැවසීමට තරම් දුර ගොස් ඇත (එය ඔවුන් ඉදිරිපත් කළ දෙයමයි).
janko-m

5
වින්ඩෝස් 7 හි පවා IE8 තවමත් ප්‍රමිතිය බව දුටු විට මම කියවීම නැවැත්වුවෙමි
Capsule

550

පිළිගත් පිළිතුර ක්‍රියාත්මක වන නමුත් styleමගේ පරීක්ෂණ වලදී DOM හි හිස් ලක්ෂණයක් තබයි. ලොකු දෙයක් නැත, නමුත් මෙය සියල්ල ඉවත් කරයි:

removeAttr( 'style' );

මෙය ඔබට සියලු ගතික මෝස්තර ඉවත් කර නැවත ස්ටයිල් ෂීට් මෝස්තරයට යාමට අවශ්‍ය යැයි උපකල්පනය කරයි.


මෙය හොඳ අදහසක් නමුත් jQuery හි දෝෂ සහිතය
Tosh

4
@ ටොෂ් එම දෝෂය 8/25/2011: bugs.jquery.com/…
ThinkingStiff

මම දනිමි නමුත් අවම වශයෙන් 1.7 අනුවාදයේ එය තවමත් දෝෂ සහිතය, මම 1.8 පරීක්ෂා කර නැත
ටොෂ්

7
මෙය ශෛලීය ගුණාංගයේ ඇති අනෙකුත් සියලුම ගුණාංග ඉවත් කරයි. එබැවින් ely ානවන්තව තෝරා ගන්න.
codingrhythm

1
මෙය දක්ෂයි! jquery විසින් සාදන ලද පේළිගත ශෛලිය css මෝස්තර නැවත ලිවිය යුතු අවස්ථාවන්හිදී පිළිගත් පිළිතුර ක්‍රියා නොකරනු ඇත, නමුත් මෙම ක්‍රමය සෑම අවස්ථාවකම හොඳින් ක්‍රියාත්මක වේ.
Farzad YZ

173

JQuery භාවිතා කරමින් CSS දේපලක් ඉවත් කිරීමට ක්‍රම කිහිපයක් තිබේ:

1. CSS දේපල එහි පෙරනිමි (ආරම්භක) අගයට සැකසීම

.css("background-color", "transparent")

එම්ඩීඑන් හි CSS දේපල සඳහා ආරම්භක අගය බලන්න . මෙහි පෙරනිමි අගය වේ transparent. inheritඑහි මවුපියන්ගෙන් ගුණාංගය උරුම කර ගැනීම සඳහා ඔබට CSS ගුණාංග කිහිපයක් භාවිතා කළ හැකිය . CSS3 / CSS4 දී, ඔබ ද භාවිතා කළ හැක initial, revertහෝ unsetනමුත් මෙම ප්රධාන වචන සීමිත බ්රවුසරය සහාය විය හැක.

2. CSS දේපල ඉවත් කිරීම

හිස් නූලක් CSS දේපල ඉවත් කරයි, එනම්

.css("background-color","")

නමුත් jQuery .css () ප්‍රලේඛනයේ දක්වා ඇති පරිදි පරෙස්සම් වන්න, මෙය දේපල ඉවත් කරන නමුත් පසුබිම ඇතුළුව ඇතැම් CSS කෙටිකාලීන ගුණාංග සඳහා IE8 සමඟ අනුකූලතා ගැටළු ඇත .

ශෛලීය දේපලක වටිනාකම හිස් නූලකට සැකසීම - උදා. $ ('# Mydiv'). Css ('color', '') - HTML ශෛලිය තුළ වේවා, මූලද්‍රව්‍යයක් දැනටමත් සෘජුවම යොදවා ඇත්නම් එම දේපල ඉවත් කරයි. ආරෝපණය, jQuery හි .css () ක්‍රමය හරහා හෝ ශෛලීය දේපල සෘජුවම DOM හැසිරවීම හරහා. කෙසේ වෙතත්, එය CSS රීතියක් සමඟ මෝස්තර පත්‍රිකාවක හෝ අංගයක ඉවත් කර නැත. අවවාදයයි: සැලකිය යුතු ව්‍යතිරේකයක් නම්, IE 8 සහ ඊට පහළින්, මායිම හෝ පසුබිම වැනි කෙටිකාලීන දේපලක් ඉවත් කිරීමෙන්, එම ශෛලිය මුලුමනින්ම මූලද්‍රව්‍යයෙන් ඉවත් කරනු ඇත .

3. මූලද්රව්යයේ සමස්ත ශෛලිය ඉවත් කිරීම

.removeAttr("style")

50

පිරිසිදු ජාවාස්ක්‍රිප්ට් සමඟ විලාසිතාවේ ගුණාංගයක් ඉවත් කිරීමට මට ක්‍රමයක් ලැබුණි

var bodyStyle = document.body.style;
if (bodyStyle.removeAttribute)
    bodyStyle.removeAttribute('background-color');
else        
    bodyStyle.removeProperty('background-color');

11
මිනිහා දැනටමත් jQuery භාවිතා කරයි ... හරස් බ්‍රව්සර් ක්‍රමයක් නැවත ක්‍රියාත්මක කිරීමට කරදර වන්නේ ඇයි!?!?
බිලී

33
jquery සෑම දෙයක්ම නොවන නිසා, ඇය හෝ සමහර විට මම සංවර්ධකයින් ලෙස අප සෑම කෙනෙකුම පැවසිය යුත්තේ ගැළපුම යනු කුමක්ද සහ ජාවාස්ක්‍රිප්ට් වැනි මූලික භාෂාවන් සමඟ එවැනි දේ කරන්නේ කෙසේද යන්න දැන සිටිය යුතුය, සමහර විට මෙය මගේ න්‍යාය විය හැකිය මම දැනටමත් මගේම රාමුවක් නිර්මාණය කර ඇත්තෙමි මූලික ජාවාස්ක්‍රිප්ට් පිළිබඳ මගේ දැනුමෙන් මම මගේම සංකල්පයක් සහ මගේ චින්තන ක්‍රමයක් ඇති දේ අන් අය භාවිතා කිරීම ප්‍රතික්ෂේප කරමි :) තවද ඔබේ (-) ස්තූතිවන්ත වන විට මට අගය එකතු කිරීම අවශ්‍ය විය :) එසේම පුද්ගලයා විසින් ඇය පිරිමි ළමයෙක් නොවේ නම් ඇය ඇලෙක්ස්
මර්වාන්

1
මට මතක තබා ගැනීමට අවශ්‍ය වන්නේ ඔබ එය භාවිතා නොකරන්නේ නම් ඔබ document.all පරීක්ෂා නොකළ යුතු බවයි. සමහර විට ඔබ මේ ආකාරයට පරික්ෂා කළ යුතුය: if (elm.style.removeProperty) {elm.style.removeProperty (propertyName); } else if (elm.style.removeAttribute) {elm.style.removeAttribute (attributeName); }
රිචඩ්

(navigator.appName == "Microsoft Internet Explorer") document.body.style.removeAttribute ('background-color') නම් එය එසේ විය යුතුය. වෙනත් document.body.style.removeProperty ('පසුබිම්-වර්ණය'); අනෙක් අතට ඔබේ විසඳුමත් හරි :) ඔබේ සටහනට ස්තූතියි
මර්වාන්

9
නැත, බ්‍රවුසරය පරීක්ෂා කරනවාට වඩා එම ශ්‍රිතය තිබේදැයි ඔබ අනිවාර්යයෙන්ම පරීක්ෂා කළ යුතුය. IE හි ඊළඟ අනුවාදයේ ක්‍රියාකාරී නාමය වෙනස් කිරීමට MS තීරණය කළහොත් කුමක් කළ යුතුද? ඔබ ගොස් IE හි අනුවාදයද පරීක්ෂා කරන්නේද?
j03w

24

මෙය සම්පූර්ණ ටැගය ඉවත් කරයි:

  $("body").removeAttr("style");

1
එය දළ විසඳුමක් වන අතර එය සම්පූර්ණ මූලද්‍රව්‍යයේ ශෛලිය ඉවත් කරන බැවින් එය සැමවිටම ක්‍රියා නොකරනු ඇත
කොන්ස්ටන්ටින් සාඩිරන්

19

මෙම jQuery කාර්යයන් වලින් එකක් හෝ ක්‍රියා කළ යුතුය:

$("#element").removeAttr("style");
$("#element").removeAttr("background-color") 

23
එක් CSS දේපලක් පමණක් ඉවත් කිරීම සඳහා:var cssObject = $('selector').prop('style'); cssObject.removeProperty('background-color');
ilgaar

igaar - ඔබේ විසඳුම පිළිවෙලයි. "ප්‍රදර්ශනය: කිසිවක්" නොතිබිය යුතු නමුත් ඉතිරිව තිබිය යුතු වෙනත් ගුණාංග සහිත මේස සෛල රාශියක් සඳහා මම එය '.එය' ලූපයකට දැමුවෙමි. එය දෝෂ රහිතව ක්‍රියා කළ අතර, දර්ශනය ඉවත් කිරීම: කිසිවක් නැත.
රොබ් වොන් නෙසල්රෝඩ්


7

වැනි දෙයක් ගැන:

var myCss = $(element).attr('css');
myCss = myCss.replace('background-color: '+$(element).css('background-color')+';', '');
if(myCss == '') {
  $(element).removeAttr('css');
} else {
  $(element).attr('css', myCss);
}

මම මේකට කැමතියි! ඔබ නිශ්චිත දේපල ඉවත් කරන අතර වෙන කිසිවක් නැත.
ජොයෙල්

7

මගේ ප්ලගිනය භාවිතා කරන්න:

$.fn.removeCss=function(all){
        if(all===true){
            $(this).removeAttr('class');
        }
        return $(this).removeAttr('style')
    }

ඔබේ නඩුව සඳහා, එය පහත පරිදි භාවිතා කරන්න:

$(<mySelector>).removeCss();

හෝ

$(<mySelector>).removeCss(false);

ඔබට ඉවත් කිරීමට අවශ්‍ය නම් එහි පන්තිවල අර්ථ දක්වා ඇති CSS:

$(<mySelector>).removeCss(true);

$(this).removeAttrඅතිරික්ත වන අතර this.removeAttrඑය ප්‍රමාණවත් විය යුතුය.
එමිලි බර්ජරන්

Attr removeAttr ද ඉවත් කරයිද class? මම හිතන්නේ නැහැ
ඇබ්ඩෙනෝර් ටූමි

මම මේ කතා කරන්නේ removeAttrඔබේ ප්ලගිනයේ ඇතුළත, thisදැනටමත් jQuery අංගයක් ඇති තැනක ය. $(this)අතිරික්ත වේ.
එමිලි බර්ජරන්

2
අහ්! හරි හරි .. @EmileBergeron, පැරණි jQuery සපයයි thisලෙස HTMLElement, නිදසුනක් ලෙස jQuery අංගයක් චේට ... ඔබ දකින ලෙස මගේ පිළිතුර වයස ... ඇයි .. කොහොම උනත්, මම ඔබ ඔවුන් ඒ බව වෙනස් ඇයි, කියන්න ඔවුන් ඒක කරන්න පුළුවන් වෙන්නේ ඒ ඊඑස් 6 හි අළුත් එන ඊතල ක්‍රියාකාරිත්වය නිසා. .. සහ thisevent.currentTarget
නිෂ් less ල වන

1
සාමාන්යයෙන් ප්රමාණවත්! ;) JS ලෝකයේ අවුරුදු 3 ක් වයසැති ආකාරය විහිළුවක්.
එමිලි බර්ජරන්

7

මේක උත්සාහ කරන්න:

$('#divID').css({"background":"none"});// remove existing

$('#divID').css({"background":"#bada55"});// add new color here.

ස්තූතියි


ඔබගේ "පවතින ඉවත් කිරීම" සමඟ ඇති එකම ගැටළුව නම්, එක් කට්ටලයක් තිබේ නම් එය ස්ටයිල්ෂීට් පසුබිම ද අභිබවා යනු ඇත.
Jtbs

6

ඔබ CSS විලාසය භාවිතා කරන්නේ නම්, ඔබට මෙය භාවිතා කළ හැකිය:

$("#element").css("background-color","none"); 

ඉන්පසු ආදේශ කරන්න:

$("#element").css("background-color", color);

ඔබ CSS ශෛලිය භාවිතා නොකරන්නේ නම් සහ ඔබට HTML අංගයේ ගුණාංග තිබේ නම්, ඔබට මෙය භාවිතා කළ හැකිය:

$("#element").attr("style.background-color",color);

6

2018

ඒ සඳහා ස්වදේශීය API ඇත

element.style.removeProperty(propery)

3

මේකත් වැඩ කරනවා !!

$elem.attr('style','');

2

ඔබ CSS පන්තියක් ඉවත් කිරීමට කැමති විලාසය සාදා නොගන්නේ මන්ද? දැන් ඔබට භාවිතා කළ හැකිය : .removeClass(). මෙය භාවිතා කිරීමේ හැකියාව ද විවෘත කරයි:.toggleClass()

(පන්තිය තිබේ නම් එය ඉවත් කරන්න, එය නොමැති නම් එය එක් කරන්න.)

පිරිසැලසුම් ගැටළු සමඟ කටයුතු කිරීමේදී පන්තියක් එකතු කිරීම / ඉවත් කිරීම වෙනස් කිරීම / දෝශ නිරාකරණය කිරීම අඩු ව්‍යාකූල වේ (විශේෂිත ශෛලියක් අතුරුදහන් වූයේ මන්දැයි සොයා ගැනීමට උත්සාහ කිරීමට වඩා වෙනස්ව.)



1

මෙය වෙනත් විසඳුම් වලට වඩා සංකීර්ණ ය, නමුත් අවස්ථා වලදී වඩාත් නම්‍යශීලී බවක් ලබා දිය හැකිය:

1) ඔබට අයදුම් කිරීමට / තෝරා ගැනීමට අවශ්‍ය මෝස්තරය හුදකලා කිරීමට (වටකර ගැනීමට) පන්ති අර්ථ දැක්වීමක් කරන්න. එය හිස් විය හැකිය (මෙම අවස්ථාව සඳහා බොහෝ විට විය යුතුය):

.myColor {}

2) මත පදනම් වූ, මෙම කේතය භාවිතා http://jsfiddle.net/kdp5V/167/ සිට මෙම පිළිතුර විසින් gilly3 :

function changeCSSRule(styleSelector,property,value) {
    for (var ssIdx = 0; ssIdx < document.styleSheets.length; ssIdx++) {
        var ss = document.styleSheets[ssIdx];
        var rules = ss.cssRules || ss.rules;
        if(rules){
            for (var ruleIdx = 0; ruleIdx < rules.length; ruleIdx++) {
                var rule = rules[ruleIdx];
                if (rule.selectorText == styleSelector) {
                    if(typeof value == 'undefined' || !value){
                        rule.style.removeProperty(property);
                    } else {
                        rule.style.setProperty(property,value);
                    }
                    return; // stops at FIRST occurrence of this styleSelector
                }
            }
        }
    }
}

භාවිත උදාහරණය: http://jsfiddle.net/qvkwhtow/

ගුහා:

  • පුළුල් ලෙස පරීක්ෂා කර නැත.
  • නව වටිනාකමට වැදගත් හෝ වෙනත් විධානයන් ඇතුළත් කළ නොහැක . මෙම උපාමාරු මගින් දැනට පවත්නා ඕනෑම නියෝගයක් නැති වී යයි.
  • ස්ටයිල් සෙලෙක්ටරයක සිදුවීම මුලින්ම සොයාගත් වෙනස්කම් පමණි. සම්පූර්ණ මෝස්තර එකතු කිරීම හෝ ඉවත් කිරීම නොකරයි, නමුත් මෙය වඩාත් සවිස්තරාත්මකව කළ හැකිය.
  • අවලංගු / භාවිතා කළ නොහැකි අගයන් නොසලකා හරිනු ඇත.
  • ක්‍රෝම් හි (අවම වශයෙන්), දේශීය නොවන (හරස් අඩවි වල මෙන්) CSS රීති document.styleSheets වස්තුව හරහා නිරාවරණය නොවේ, එබැවින් මෙය ඒවා ක්‍රියාත්මක නොවේ. මෙම කේතයේ "මුලින් සොයාගත්" හැසිරීම මතක තබා ගනිමින් යමෙකුට දේශීය අතිච්ඡාදනයන් එකතු කර එය හැසිරවිය යුතුය.
  • document.styleSheets පොදුවේ හැසිරවීමට මිත්‍රශීලී නොවේ, මෙය ආක්‍රමණශීලී භාවිතය සඳහා ක්‍රියා කරනු ඇතැයි අපේක්ෂා නොකරන්න.

මෝස්තරය මේ ආකාරයෙන් හුදකලා කිරීම යනු CSS යනු කුමක් වුවත්, එය හැසිරවීම නොවේ. CSS නීති හැසිරවීම යනු jQuery යනු කුමක් ද යන්න නොවේ, jQuery DOM අංග හැසිරවීම සහ එය කිරීමට CSS තේරීම් භාවිතා කරයි.


1

වෙබ් සංවර්ධනයේදී සරලයි. විශේෂිත ශෛලියක් ඉවත් කිරීමේදී හිස් නූල් භාවිතා කිරීම මම නිර්දේශ කරමි

$(element).style.attr = '  ';




0

උත්සාහ කරන්න

document.body.style=''

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.