0

特定の長さを返すためにトラバースする必要がある div のリストがあります。アクティブな画像を持つ div の合計量をすべて合計する必要があります。非アクティブなイメージは で示されますalt= "missing"。ajax インタラクションには、この特定の長さのサイズが必要です。

質問

alt タグの値が欠落している子要素を持たない親 div の長さを取得するにはどうすればよいですか? (セレクターの冗長性については申し訳ありません)



HTML

 <div class="project-img-container">
        <div class="modal-image-0">
            <img alt="Florence" class="featured" src="/system/works/avatars/000/000/034/medium/florence.jpg?1374131286">
        </div>
        <div class="modal-image-1">
            <img alt="Nexus" class="featured" src="/system/works/avatar_bs/000/000/034/medium/nexus.jpg?1374131286">
        </div>
        <div class="modal-image-2">
            <img alt="Missing" class="featured" src="/images/medium/missing.png">
        </div>
        <div class="modal-image-3">
            <img alt="Missing" class="featured" src="/images/medium/missing.png">
        </div>
    </div>

Jquery の 成功: postImgModal

postImgModal = function(data, status) {
  var activeChildren, children, imgVal;
  imgVal = [];

  children = $(data).find('.project-img-container').children();

  /*
     children will return an object list of all divs (which in this case = 4) now I must remove the parent tags that have children img tags that have alt tag's value = "missing." 

     Lets call this var activeChildren

  */

  $.each(activeChildren, function(i, child) {
    imgVal[i] = child;
    console.log(imgVal[i]);
    return imgVal[i];
  });

  /*this loop should return a length of 2.  Opposed to before which was 4. This is because there were 2 missing alt tags above in this example html.*/

}

var activeChildren = 2; の場合、最終出力の長さは 2 になります。imgVal はこれら 2 つの div のみを返す必要があります

<div class="modal-image-0">
    <img alt="Florence" class="featured" src="/system/works/avatars/000/000/034/medium/florence.jpg?1374131286">
</div>
<div class="modal-image-1">
    <img alt="Nexus" class="featured" src="/system/works/avatar_bs/000/000/034/medium/nexus.jpg?1374131286">
</div>
4

4 に答える 4

2
$(data).find('.project-img-container').children().filter(function() {
    return !$(this).find('[alt="Missing"]').length;
});

フィドル

あるいは単に:

$(data).find('.project-img-container').children(':has([alt!="Missing"])');
于 2013-07-19T01:15:12.657 に答える
0

jQueryセレクターを使用して、ニーズを満たすことができます。以下の式は目的にかなうはずです。

$('div.project-img-container').find('img[alt!="Missing"]').parent();
于 2013-07-19T01:24:53.410 に答える