JQuery ile CSS “top” ve “left” niteliklerini kaldırın


169

Harita sürüklendiğinde öğeye her biri için değerleri olan bir 'sol' ve 'üst' özniteliği verildiği sürüklenebilir bir harita oluşturuyorum.

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

Ben tıklandığında div satır içi stil üst ve sol özniteliği kaldırmak istediğiniz bir düğme var, bu jquery ile mümkün mü?


9
Evet öyle. En azından bunları kaldıran boş bir değere ayarlayabilirsiniz.
Felix Kling

Olası kopya: JQuery kullanarak CSS özniteliğini kaldırın . Oradaki cevaplar size yardımcı olabilir.
Drew Gaynor

Bunun ' 'yalnızca boş bir değer ''
Peter Berg

3
Bir kerede yalnızca bir css özelliğini kaldırmak için: var cssObject =$('selector').prop('style'); cssObject.removeProperty('top'); cssObject.removeProperty('left');
ilgaar

Yalnızca kayıt için, boş olarak ayarlanması her zaman işe yaramaz: "Bir stil özelliğinin değerini boş bir dizeye ayarlamak ... Ancak, stil sayfasında bir CSS kuralı veya < stil> öğe. " - bkz. stackoverflow.com/questions/27791484/…
Mörre

Yanıtlar:


139

CSS topve leftare için varsayılan değerler olduğundan auto, bunları yapmaya çalıştığınız şeye bağlı olarak eşdeğer olabilir:

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

Ayrıca styleözelliği tamamen kaldırma seçeneğiniz de vardır :

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

Ancak, başka jQuery UI bileşenleri kullanıyorsanız, bunların kaldırılmasını istemediğiniz satır içi stiller gerektirebilir, bu nedenle oraya dikkatle devam edin.


61
genellikle stil niteliğine eklenen bu tür üzerine yazma işlemleri, değeri varsayılan css değerinden değiştirme anlamına gelir; otomatik olarak ayarlamak, bunları varsayılan değerine sıfırlamaz. yani auto aslında aynı değildir. doğru cevap $ ('map') olur. css ('top', '');
dsomnus

15
Bu cevap yanlış, nitelikleri kaldırmıyor, yerine başka bir şey koyuyorsunuz. Ayrıca, tüm stil etiketini kaldırmak çok mantıklı değil, bazı attrs tutmak ve başkalarını kaldırmak isteyebilirsiniz .. wtrevino'nun cevabı doğru olanıdır.
Alex

Onun önemli bir seçenek kadar büyük olması! :) Kullanıcı adı gibi alanlar için
Dean Meehan

5
Kayıt için @ wtrevino'nun cevabı burada kabul edilmelidir. Bu özel çözüm bazı koşullar altında benim için çalıştı, ancak yapabilirsem bu cevabı kaldıracağım. Ne yazık ki kabul edildiğinden izin vermiyor.
Rob Hruska

Bu doğru cevap değil ... @wtrevino en doğru cevap. Bu yanıt yalnızca tüm statik stilleri öğeden kaldırmak istiyorsanız çalışır ... çoğu durumda bu yapmak istediğiniz şey değildir.
Lars

427

Üst ve sol nitelikleri özel olarak kaldırmak ve başkalarını bırakmak istiyorsanız, bunu yapabilirsiniz:

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

Veya daha kısa bir eşdeğeri:

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

64
bu seçilenden daha iyi bir cevaptır.
phirschybar

Evet. Bu doğru cevap. İlk başta mantıklı gelmedi, çünkü ".css ('top', '')" gibi görünüyor, boş bir 'top' kuralı oluşturuyor, ama hayır, tamamen kaldırıyor.
Starkers

2
Bu henüz en iyi cevap. Ama sanırım bir tane daha buldum. Birkaç tane denedim. .css('left', undefined);hiçbir şey değişmedi. Null değerinin geçmesi de hiçbir şey yapmadı. Ancak .css('left', false);bu özelliği kaldırır.
Viktor

Diğerlerinin önerdiği gibi, bu doğru cevaplar olarak düşünülmelidir.

1
@Viktor Belgelerin açıkça boş dize kullandığını söylediğini unutmayın. Gelecekte gidebilecek belgelenmemiş tipte bir baskı yüzünden yanlış işe yarayıp yaramadığını merak ediyorum. api.jquery.com/css
Jeremy Wadhams

37

Nitelikteki tüm içeriği styleyaparak şunları kaldırabilirsiniz :

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

Ve aşağıdakileri styleyaparak belirli s'leri kaldırabilirsiniz :

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

30

CSS özelliğini boş bir dizeyle, örneğin aşağıdaki kodla ayarlamanız yeterlidir:

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

Bkz . CSS hakkında jQuery Belgeleri .


3
Bunun neden kabul edilen cevap olmadığından emin değilim. Kabul edilen gerçek cevap, cSS özelliğini aslında sorunun başlığı olan nesneden kaldırmaması nedeniyle kibirli.
Paul Go

6
  1. Buraya gidin: jQuery API'sı
  2. 'Kaldır' için Ctrl + F
  3. oku:

Bir stil özelliğinin değerini boş bir dizeye ayarlamak - ör. $ ("#Mydiv") .css ("color", "") - HTML stilinde olsun, önceden uygulanmışsa bu özelliği bir öğeden kaldırır özniteliği, jQuery's .css () yöntemi aracılığıyla veya style özelliğinin doğrudan DOM manipülasyonu yoluyla.

Dokümanlar size gerçekleştirmeye çalıştığınız şey için güncel, önerilen yaklaşımı verir, bu da genellikle zaman kazandırabilir, çünkü yığın taşması üzerinde ileri geri alev savaşlarını okumak zorunda kalmazsınız (ne kadar eğlenceli / aydınlatıcı olursa olsun !).


5

Başına bu JQuery hata raporu

element.removeAttr ( 'tarzı')
Webkit tabanlı tarayıcılarda sürekli çalışmaz. Örneğin, iOS 6.1'de bu sorunla karşılaştım. Düzeltme kullanmaktır:
element.attr ('stil', '')


2

Hepsini kaldırmak isterseniz,

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

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

}

o zaman css pervanelerini kaldırmak istiyorsanız:

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

1

Bence en temiz yol, özelliği bir tür null / zero / default değeri ile yazmak yerine , öğenin CSSStyleDeclaration öğesinden tamamen kaldırmaktır :

$(".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(';')+';');

}

Bu eklenti ile güvenle silin!

$ ( 'MyDiv') removeCss ( 'renk.');


0

Kolayca kaldırılamayan bazı stiller var. (Taşma akla geliyor)

Geçici bir çözüm, 2 farklı sınıf oluşturmak ve istediğiniz stili içeren sınıfı eklemek / kaldırmak olacaktır.

Kolayca kaldırılabilen / devre dışı bırakılabilen stil özellikleri için en iyi çözüm DEĞİLDİR.


0

Css stillerini kaldırmak için stile boş bir dize atayın

bu durumda

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.