2012-01-17 7 views
6

私は$(el).css()で遊んでいるので、要素に境界線があるかどうかを判断しようとしています。JQueryを使用して、要素に境界線があるかどうかを確認します。

if ($(el).css("border-right-style") == "solid" && $(el).css("border-left-style") == "solid" && ...) {} 
:私は作品の境界線を設定する .css("border-style", "solid")を使用しますが、実際には4つの個々のスタイルを設定します:あなたが何かをしなければならないように

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

を、国境をチェックすると、少し面倒です

border-styleは常に ""と等しいので、単に$(el).css("border-style") != ""をチェックするだけでは機能しません。

これを行うもっとエレガントな方法はありますか?

+0

なぜクラスで作業しないのですか? – jcvegan

+0

私はいつもそうしていますが、この特定のケースでは、スタイルはとてもダイナミックで、各要素に特有なので、このようにする方が簡単です。 –

答えて

8

border-styleそれが可能であれば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

ああ。それは公式です!ありがとう、これはそれを説明します。 –

3

4つのプロパティがすべて設定されているかどうかを知りたい場合は、4つのプロパティをチェックする必要があります。私はセレクタをキャッシュしますが。

$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

私が持っている質問は、「border-style」はCSSに本当に存在するのでしょうか?それとも他の4つのショートカットですか? –

+0

後者のborder-styleは4つのプロパティを設定します。デバッガツールを使用して検査する場合は、通常は「計算されたスタイル」のオプションがあり、すべて表示されます。一重線の境界線:1ピクセルの青は12のプロパティを設定します。 – Sinetheta

1

1として、私は知らないので、短縮形であり、あなたがseparatlyそれらを取得する必要があるので、あなたはそれらを一緒に得るカントあなたが試みていることをやってください。 DOMは、インラインまたはスクリプト内の要素に割り当てられた要素のスタイルのみを提供します。 CSS宣言からの境界線などのスタイルを継承しているかどうかはわかりません。

1

警告....それは継承されたCSSファイルからスタイル値を表示することができますあなたはまだ特性を試験するために持っていますが、これは、それはもう少し抽象的にすることができ...

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

私はこれについて何か考えましたが、読むのは難しいです。 –

+0

ほとんど変更を加えずに、jQueryプラグインにしてプロパティ名を抽象化できるので、他の省略表現のプロパティ値をテストするために再利用できます。メソッドの可読性を低下させますが、全体的な読みやすさを向上させます( '$ '' p ')。checkProperty(' margin '、' 5px ')')。 – lsoliveira

0

$( "selector")。css( "border-bottom-color"));

関連する問題