2011-06-21 5 views
0
$("img").load(function(){ 
    var width = $(this).width(); 
    var height = $(this).height(); 
    if (width * height > 40000) { 

}}); 

私はこのコードを持っていますが、40,000ピクセルより大きく、テーブルの中にない場合は強調表示したいと思います。私はhas()を使うことは子孫しか取得しないことを知っています。負荷を使用します(関数()ここでは誤っている可能イメージの幅*高さ(合計サイズは40000より大きい)jquery。テーブルの中にはありません

+0

40kピクセル以上の画像を選択しますか? – zzzzBov

+0

このコードでは、画像にテーブルの祖先があるかどうかを判断する必要があります。それがあなたのやり方を尋ねているのですか?ロード機能の使用には何も問題ありません。 – Jordan

答えて

1

あなただけの要素を選択したい場合は、セレクタを使用することができ、:もちろん

$images = $('img:area(40000)').not('table *'); 

を、あなたが求めてされるべきです、wtfは:area(40000)?ここで

あなたが行く:

$.expr[':'].area = function(element, index, meta, stack){ 
    var $ele, 
    size, 
    area; 
    $ele = $(element); 
    size = parseInt(meta[3]); 
    area = $ele.width() * $ele.height(); 
    return area > size; 
}; 

もう少し時間であなたは:area(40000,lt)スタイルの構文で><==などを使用できるように、第2のparamを取るために、カスタムセレクタを拡張することができます。

+0

私はカスタムセレクタを提案しようとしていました。 +1が素晴らしく、これについて正しく考えているため+1。 –

+0

@レヴィ・モリソン、私は素晴らしい+1を得るのが大好きです。 – zzzzBov

1

あなたがチェックすることができ、そのparents:?あなたのコードではそう

if($(this).parents('table').length > 0) {/*in a table*/} 

:私はあなたの質問を推測

$("img").load(function() { 
    var width = $(this).width(); 
    var height = $(this).height(); 
    if (width * height > 40000) { 
     if ($(this).parents('table').length > 0) { 
      /* in a table */ 
     } 
     else { 
      /* NOT in a table */ 
     } 
    } 
}); 
1

がある:「どのように検出するために、要素が子供の場合<table>

もしそうなら、あなたは次のようにすることができます:

if ((width * height > 40000) && !($(this).closest('table').length)) { 
} 

DOMをクロールして、親のリストに<table>ノードがあるかどうかを確認します。その検索が成功しない場合には、jQueryのセットが空であり、それの長さゆえ0