2012-01-17 31 views
6

Yani bir öğenin bir kenarlığı olup olmadığını belirlemeye çalışıyorum, $(el).css() ile oynuyor.Öğenin bir kenarlığı olup olmadığını kontrol etmek için JQuery'yi kullanın.

if ($(el).css("border-right-style") == "solid" && $(el).css("border-left-style") == "solid" && ...) {} 
: Ben çalışan sınır ayarlamak için .css("border-style", "solid") kullanmak, ama aslında o 4 ayrı ayrı tarzlarda ayarlar: Eğer böyle bir şey yapmak zorunda Yani

border-right-style 
border-left-style 
border-top-style 
border-bottom-style 

, sınır kontrol biraz hantal

$(el).css("border-style") != "" için kontrol etmek, border-style her zaman "" için her zaman eşittir.

Bunu yapmanın daha şık bir yolu var mı?

+0

neden derslerle çalışmıyorsunuz? – jcvegan

+0

Genelde bunu yapıyorum ama bu durumda, stiller o kadar dinamik ve her bir öğeye o kadar özel ki, bu şekilde daha kolay. –

cevap

8

border-style Steno olduğunu ve bunu mümkün olup olmadığını bilmiyorum gibi Jquery CSS documentation

Shorthand CSS properties (e.g. margin, background, border) are not supported. 
For example, if you want to retrieve the rendered margin, 
use: $(elem).css('marginTop') and $(elem).css('marginRight'), and so on. 
+0

Oh vay. Yani resmi! Teşekkürler, bu açıklıyor. –

3

4 özellik TÜMÜ ayarlanmış olup olmadığını bilmek istiyorsanız, o zaman evet 4 özelliği kontrol etmeniz gerekir. Seçiciyi önbelleğe alsam da.

$el = $('a'); 
if ($el.css("border-right-style") == "solid" && $el.css("border-left-style") == "solid" && $el.css("border-top-style") == "solid" && $el.css("border-bottom-style") == "solid") 
{ 
    alert('yay'); 
} 

jsFiddle

+0

Yani sahip olduğum bir soru, "sınır stili" CSS'de gerçekten var mı? Yoksa diğer 4 için sadece bir kısayol mu? –

+0

İkincisi, kenarlık stili 4 özellikleri ayarlar. Bir hata ayıklayıcısını kullanarak incelemek isterseniz, genellikle hepsini gösteren bir "hesaplanmış stil" seçeneği vardır. Tek satırlık kenarlık: 1 px düz mavi ayarlar 12 özellik. – Sinetheta

1

başına, çünkü Separatly onları almak zorunda bunları birbirine uyuyamıyrom Ne denersen onu yap. DOM yalnızca satır içi veya komut dosyasındaki öğeye atanan öğe için stiller sağlar. CSS bildirimlerinden bir sınır gibi bir stil miras aldığını göstermez.

1

Hala özelliklerini test etmek zorunda ama bu biraz daha soyut yapabilir ...

function check(sel, prop) { 
    var i, property, $o = $(sel), directions = ["left", "right", "top", "bottom"]; 

    for (i = 0; i < directions.length; i++) { 
     property = $o.css(prop + '-' + directions[i] + '-style'); 
     if (property !== 'solid') { 
      return false; 
     } 
    } 

    return true; 
} 
+0

Böyle bir şey hakkında düşündüm ama imo okumak daha zor. –

+0

Küçük bir değişiklikle jQuery eklentisi yapabilir ve diğer shorthand özellik değerlerini test etmek için yeniden kullanabilmeniz için özellik adını yazabilirsiniz. Yöntemin okunabilirliğini azaltırsınız, ancak genel okunabilirliği artırırsınız ('$ ('p'). CheckProperty ('margin', '5px')'). – lsoliveira

0
Bu miras CSS dosyalarından stil değerleri görüntüleyebilir

....

uyarısı ($ ("seçici") css ("border-bottom-color")).;

İlgili konular