निकालें jQuery के साथ सीएसएस "शीर्ष" और "छोड़ दिया" विशेषताएँ


169

Im एक खींचने योग्य मानचित्र का निर्माण कर रहा है, जब मानचित्र को तत्व को घसीटा जाता है, तो प्रत्येक के लिए मानों के साथ एक 'वाम' और 'शीर्ष' विशेषता दी जाती है ...

<div class="map" style="top:200px; left:100px;">Map</div>

मेरे पास एक बटन है जिसे मैं क्लिक करने पर इनलाइन शैली से शीर्ष और बाईं विशेषता को हटाना चाहता हूं, क्या यह संभव है?


9
हाँ यही है। कम से कम आप उन्हें एक खाली मान पर सेट कर सकते हैं, जो इसे हटा देता है।
फेलिक्स क्लिंग

संभव डुप्लिकेट: Jquery का उपयोग करके सीएसएस विशेषता को हटा दें । वहां के उत्तर आपके लिए मददगार हो सकते हैं।
आकर्षित गायन

ध्यान दें कि ' 'केवल एक खाली मान के रूप में गिना नहीं जाता है''
पीटर बर्ग

3
एक समय में केवल एक css संपत्ति निकालने के लिए: var cssObject =$('selector').prop('style'); cssObject.removeProperty('top'); cssObject.removeProperty('left');
ilgaar

केवल रिकॉर्ड के लिए, खाली करने के लिए सेटिंग हमेशा काम नहीं करती है: "स्टाइल प्रॉपर्टी के मूल्य को एक खाली स्ट्रिंग पर सेट करना ... यह, हालांकि, एक स्टाइल में सीएसएस नियम के साथ लागू की गई शैली को हटा दें या < शैली> तत्व। " - देखें stackoverflow.com/questions/27791484/…
3

जवाबों:


139

CSS topऔर के लिए डिफ़ॉल्ट मान leftहैं auto, इसलिए उन्हें उस पर सेट करना आपके द्वारा किए जा रहे प्रयासों के आधार पर समतुल्य हो सकता है:

$('.map').css('top', 'auto').css('left', 'auto');

आपके पास पूरी तरह से styleविशेषता को हटाने का विकल्प भी है :

$('.map').removeAttr('style');

हालाँकि, यदि आप अन्य jQuery UI घटकों का उपयोग कर रहे हैं, तो आपको इनलाइन शैलियों की आवश्यकता हो सकती है जिन्हें आप हटाना नहीं चाहते हैं, इसलिए वहां सावधानी बरतें।


61
आमतौर पर शैली विशेषता में जोड़े गए ऐसे ओवरराइट्स डिफ़ॉल्ट सीएसएस मूल्य से मूल्य को बदलने के लिए होते हैं; इसे ऑटो पर सेट करना उन्हें डिफ़ॉल्ट मान पर रीसेट नहीं करता है। अर्थ ऑटो वास्तव में एक समान नहीं है तो मूल्य बिल्कुल नहीं है। इसलिए सही उत्तर $ ('मैप') होगा। css ('टॉप', '');
dsomnus

15
यह उत्तर गलत है, आप विशेषताओं को हटा नहीं रहे हैं, बल्कि उन्हें किसी और चीज़ से बदल रहे हैं। इसके अलावा, पूरे स्टाइल टैग को हटाने से कोई मतलब नहीं है, हो सकता है कि कोई व्यक्ति कुछ अट्रेक्शन रखना चाहता हो और दूसरों को हटा सकता है। wtrevino का उत्तर सही है।
एलेक्स

यह एक बहुत अच्छा विकल्प नहीं है, इसलिए यह बहुत अच्छा है! :) उपयोगकर्ता नाम जैसे क्षेत्रों के लिए
डीन मेहान

5
रिकॉर्ड के लिए, @ wtrevino का उत्तर यहां स्वीकार किया जाना चाहिए। इस विशेष समाधान ने कुछ परिस्थितियों में मेरे लिए काम किया, लेकिन अगर मैं कर सकता था तो मैं इस उत्तर को हटा दूंगा। दुर्भाग्य से, जब से इसे स्वीकार किया गया है, यह मुझे नहीं होने देगा।
Rob Hruska

यह सही उत्तर नहीं है ... @wtrevino उत्तर सबसे सही है। यह जवाब केवल तभी काम करेगा जब आप तत्व से सभी स्थिर शैलियों को हटाना चाहते हैं ... ज्यादातर मामलों में यह वह नहीं है जो आप करना चाहते हैं।
लार्स

427

यदि आप विशेष रूप से शीर्ष और बाईं विशेषताओं को हटाना चाहते हैं और दूसरों को छोड़ना चाहते हैं, तो आप ऐसा कर सकते हैं:

$('.map').css('top', '').css('left', '');

या, एक छोटा समकक्ष:

$('.map').css({
    'top': '',
    'left': ''
});

64
यह एक चयनित से बेहतर उत्तर है।
phirschybar

हां। यह सही जवाब है। पहली बार में यह समझ में नहीं आया, क्योंकि यह ".cs ('टॉप', '')" जैसा दिखता है "बस एक खाली 'टॉप' नियम बनाता है, लेकिन नहीं, यह इसे पूरी तरह से हटा देता है।
स्टार्कर

2
यह अभी तक का सबसे अच्छा जवाब है। लेकिन मुझे लगता है कि मैंने एक और पाया। मैंने कुछ अलग करने की कोशिश की। .css('left', undefined);कुछ भी नहीं बदला। पासिंग नल कुछ भी नहीं किया। लेकिन .css('left', false);उस संपत्ति को हटा देता है।
विक्टर

जैसा कि दूसरों ने सुझाव दिया है, इसे सही उत्तर माना जाना चाहिए।

1
@Viktor ध्यान दें कि प्रलेखन स्पष्ट रूप से खाली स्ट्रिंग का उपयोग करने के लिए कहता है। मुझे आश्चर्य है कि अगर कुछ अनिर्दिष्ट प्रकार के जबरदस्ती के कारण काम करना गलत होता है जो भविष्य में दूर जा सकता है? api.jquery.com/css
जेरेमी वध्म्स

37

आप styleविशेषता के सभी अवयवों को हटाकर कर सकते हैं:

$('.map').removeAttr('style');

और आप विशिष्ट styleएस हटाकर कर सकते हैं:

$('.map').css('top', '');
$('.map').css('left', '');

30

सीएसएस संपत्ति को एक खाली स्ट्रिंग के साथ सेट करें, उदाहरण के लिए निम्नलिखित कोड के साथ:

$('#mydiv').css('color', '');

CSS पर jQuery का प्रलेखन देखें ।


3
निश्चित नहीं कि यह स्वीकृत उत्तर क्यों नहीं है। वास्तविक स्वीकृत जवाब हैक है क्योंकि यह वास्तव में सीएसएस संपत्ति को ऑब्जेक्ट से नहीं हटाता है, जो प्रश्न का शीर्षक है।
पॉल गो

6
  1. यहां जाएं: jQuery API
  2. 'हटाने' के लिए Ctrl + F
  3. पढ़ें:

एक शैली संपत्ति के मूल्य को एक रिक्त स्ट्रिंग में सेट करना - जैसे $ ("#mydiv") .css ("रंग", "") - उस संपत्ति को एक तत्व से निकालता है यदि यह पहले से ही सीधे लागू किया गया है, चाहे HTML शैली में विशेषता, jQuery के .css () विधि के माध्यम से, या शैली संपत्ति के प्रत्यक्ष डोम हेरफेर के माध्यम से।

डॉक्स आपको जो उपलब्ध कराने की कोशिश कर रहे हैं उसके लिए आपको वर्तमान, अनुशंसित दृष्टिकोण प्रदान करता है, जो अक्सर आपको समय बचा सकता है क्योंकि आपको स्टैक ओवरफ्लो पर आगे और पीछे लौ युद्धों को पढ़ने की ज़रूरत नहीं है (चाहे कितना मजेदार / ज्ञानवर्धक हो। !)।


5

प्रति इस JQuery बग रिपोर्ट

element.removeAttr ( 'शैली')
वेबकिट आधारित ब्राउज़रों में लगातार काम नहीं करता है। उदाहरण के लिए, मैंने iOS 6.1 पर इस समस्या को चलाया। उपयोग करने के लिए ठीक है:
element.attr ('शैली', '')


2

यदि आप यह सब निकालना चाहते हैं तो आप कर सकते हैं

$('.map').removeAttr('style');

2
$.fn.removeCss=function(prop){
   if(!prop){
          return $(this).removeAttr('style').removeAttr('class');
     }
    else{
         return $(this).css(prop,null);
    }

}

फिर यदि आप सीएसएस प्रोप हटाना चाहते हैं:

    $('#mydiv').removeCss('color');
//To remove all prop Css
    $('#mydiv').removeCss();

1

मेरी राय में सबसे साफ तरीका यह है कि संपत्ति को CSSStyleDeclaration के तत्व से पूरी तरह से हटा दिया जाए , बजाय इसके कि यह किसी प्रकार के शून्य / शून्य / डिफ़ॉल्ट मान के साथ ओवरराइट कर दे:

$(".foo").prop("style").removeProperty("top");
$(".foo").prop("style").removeProperty("left");
$(".foo").prop("style").removeProperty("background-color");

0
$.fn.removeCss=function(toDelete){

    var props=$(this).attr('style').split(';');
var tmp=-1;
for( var p=0;p<props.length; p++){if(props[p].indexOf(toDelete)!==-1){tmp=p}};
if(tmp!==-1){

   delete props[tmp];
}

  return $(this).attr('style',props.join(';')+';');

}

इस प्लगइन के साथ सुरक्षित रूप से हटाएं!

$ ( 'MyDiv') removeCss ( 'रंग')।


0

कुछ ऐसी शैलियाँ हैं जिन्हें आसानी से नहीं हटाया जा सकता है।

एक वर्कअराउंड 2 अलग-अलग कक्षाएं बनाने और अपनी इच्छित शैली को जोड़ने / हटाने के लिए होगा।

शैली गुणों के लिए सबसे अच्छा समाधान नहीं जिसे आसानी से हटाया जा सकता है / अक्षम किया जा सकता है।


0

सीएसएस शैलियों को हटाने के लिए शैली को एक खाली स्ट्रिंग असाइन करें

इस मामले में

$('.map').css({top:'',left:''});

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.