3

下の画像に示すように、div要素があります。css 表示をブロックとして持つ div の数が必要です。

私が試したこと:

1) $('div.price_listing_container:visible').length

2.)

  $('#content').children("div").filter(function() {
        return $(this).css('display') !== 'none';
  }).length

3.) $("#content > div").filter(":block").size()

最後のオプションはまったく機能しませんでした。他の 2 つはアラートで機能しますが、戻り値を変数に割り当てると、値が 0 になります。なぜそうなのかはわかりません。以下のコードを参照してください。

var numberOfResultsVisible =  ($('#content').children("div").filter(function() {
                return $(this).css('display') !== 'none';
            }).length);

var numberOfResultsVisible =  $('div.price_listing_container:visible').length;

代入値の後、0 になります。

カウントを取得するために他の方法を使用できるかどうか教えてください。

ここに画像の説明を入力

4

9 に答える 9

2

単純なループはどうですか?

$(function(){
    var allElems = document.getElementsByTagName('div');
    var count = 0;
    for (var i = 0; i < allElems.length; i++)
    {
        var thisElem = allElems[i];
        if (thisElem.style.display == 'block') count++;
    }
    alert(count);
});

ここでも同じ:http: //jsfiddle.net/E252r/8/

于 2012-07-23T11:54:49.883 に答える
1

スタイルをインライン化しないでください - 別のクラスを追加してください:

 <div class="price_listing_container plblock"> ...

次に、次を使用してそれらをフィルタリングできます。

 $('#content div.price_listing_container.plblock')

あなたのCSSには次のものがあります:

 div.plblock {display:block;}

これははるかにクリーンな方法です。

于 2012-07-23T11:38:14.613 に答える
1
$('#content').find("div:visible").length

See Demo: http://jsfiddle.net/E252r/2/

于 2012-07-23T11:37:35.133 に答える
0

これを試してください...私はちょうどそれをテストしました

    length = $('div[style~="display:block;"]').size();
于 2012-07-23T12:25:35.080 に答える
0

You said it worked on alert than try this where you do alert

//alert($('div.price_listing_container:visible').length);
var myVar;
eval('myVar = '+$('div.price_listing_container:visible').length+';');

When you assign any thing to new variable it shares the reference, and if the value of referenced memory is changed than the new variable is also changed. by this code it will not happen.

于 2012-07-23T11:44:47.487 に答える
0
var display = $("#content").attr("style");
if(display.text(style) == "display:none")
  {

  } else {

  }
于 2012-07-23T11:42:42.490 に答える
0
$('#content').children('div:visible').length
于 2012-07-23T11:41:26.373 に答える
0

getComputedStyle()物件をお探しのあなた。おそらく独自の代替機能があるIEでは利用できないと聞きました。

于 2012-07-23T11:41:55.630 に答える