JQuery kullanarak bir öğenin CSS özniteliğini nasıl kaldırırım?


95

Şunu kullanarak belirli bir öğe için bir CSS değeri ayarlarsam:

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

Bu öğeye özgü değeri geri alabilmek ve aşağıdaki satırlar boyunca basamaklı değeri kullanabilmek istiyorum:

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

Ancak bu sözdizimi işe yaramıyor gibi görünüyor - bu başka bir sözdizimi kullanarak mümkün mü?

Düzenleme: Değer, üst öğeden miras alınmaz - orijinal değerler, öğe düzeyinde bir seçiciden gelir. Herhangi bir karışıklık için özür dilerim!

Yanıtlar:


143

Gönderen jQuery docs :

Bir stil özelliğinin değerinin boş bir dizeye ayarlanması - örneğin $('#mydiv').css('color', '')-, ister HTML stili özniteliğinde, jQuery'nin .css()yöntemi aracılığıyla veya styleözelliğin doğrudan DOM manipülasyonu yoluyla , ister doğrudan uygulanmışsa, bu özelliği bir öğeden kaldırır . Bununla birlikte, bir stil sayfasında veya <style>öğede bir CSS kuralı ile uygulanmış bir stili kaldırmaz .


Bu sorunu yaşadığımda bu soruyla karşılaştım. Benim durumumda css niteliğini styleetiket üzerindeki bir öznitelikte ayarlıyordum , bu yüzden bu yöntem işe yaramadı. Stili .css()etiketi yerine yöntemle uygulamak, onu daha sonra kaldırmama izin verdi.
Glenn Moss

14

Sanırım şunları da yapabilirsiniz:

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

Uzun zaman önce displaydüz-eski-javascript'teki mülkün bir alanı göstermesi / gizlemesi için yapıyordum.


4

Aslında, yanlış olduğunu düşündüğüm sözdizimi (ile null) çalışıyor gibi görünüyor - seçicim yanlış oluşturulmuştu ve bu nedenle hiçbir öğe vermiyordu. D'oh!


21
Jquery 1.4.3 itibariyle css(..., null)çalışmıyor ve css(..., '')onun yerine kullanılmalı - bugs.jquery.com/ticket/7233
Tim Sylvester

3

Bunu dene:

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

1
Devralma maalesef aradığım davranış değil: "mülk, öğenin üst öğesinin mülkü ile aynı hesaplanan değeri alıyor" w3.org/TR/CSS2/cascade.html
cdleary

Devralmaktan daha büyük olasılıkla "başlangıç". "Devralma" ebeveynden uyarlanır, "İlk" kelime ne diyorsa onu yapar.
Chris S.

0

Değeri ne olursa olsun, IE 8'de 'filtre' için çalışmıyor gibi görünüyor, bunu kullanmak zorunda kaldım (fadeIn geri aramasında):

$(this).attr('style', $(this).attr('style').replace(/\bfilter:\s*;*/, ''));

Açıkçası, CSS'nin etkili olabilmesi için boş bir satır içi filtre bildirimini kaldırmam gerekiyordu; başka satır içi kurallar da vardı, bu yüzden sadece stil özelliğini kaldıramadım.


-2

Yardımcı olabilirse, çift tırnakla ilgili bir sorun ekliyorum:

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

süre çalışmıyor

$('#element').css('border-color', '');

İşler

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.