2

:contains(特定の sring) で指定された特定のスパンまでの yes の数を数えようとしています。私は基本的に、このグループの質問の前半で、はいがいくつあるかを検索したいだけです。私が試したコードは次のとおりです。

<div class="ce-modal-container">
    <div class="ce-cf-container">
      <span class="ce-cf-html-label">Have you chosen your exit path and/or successor?:</span>
      <span class="ce-cf-html-field"> Yes</span>
    </div>
    <div class="ce-cf-container">
      <span class="ce-cf-html-label">Have you chosen your exit path and/or successor?:</span>
      <span class="ce-cf-html-field"> No</span>
    </div>
    <div class="ce-cf-container">
      <span class="ce-cf-html-label">Have you done well this quarter?:</span>
      <span class="ce-cf-html-field"> No</span>
    </div>
    <div class="ce-cf-container">
      <span class="ce-cf-html-label">Have you chosen your exit path and/or successor?:</span>
      <span class="ce-cf-html-field"> Yes</span>
    </div>
    <div class="ce-cf-container">
      <span class="ce-cf-html-label">Have you chosen your exit path and/or successor?:</span>
      <span class="ce-cf-html-field"> Yes</span>
    </div>
</div>

<script>
var spanYes = $("span.ce-cf-html-field:contains('Yes')"),
    secondHalf = $("span.ce-cf-html-label:contains('done well')"),
    searchtxtall = spanYes.length;
    searchFirstHalf = $(".ce-cf-container").nextUntil(secondHalf).spanYes.length;
console.log(searchtxtall); //should return 3
console.log(searchFirstHalf); //should return 1
</script>

事前に感謝します私はそれがたくさんのコードであることを知っています.

4

4 に答える 4

2

いくつかのこと:

  • 「コンテナ」のつづりを間違えた
  • なぜ.nextUntil().spanYesですか?.spanYes意味がない/何もしない
  • .nextUntil兄弟で動作し.ce-cf-containerますが、コンテナです。試す:

    $(".ce-cf-container span").nextUntil(secondHalf).is(spanYes);

于 2012-12-02T17:56:21.700 に答える
0

少し派手ではない別のソリューション:

var count = 0;
$(".ce-cf-container").each(function () {
   if ($(".ce-cf-html-label:contains(done well)", this).length) {
      //break out of loop
      return false;
   }
   if ($(".ce-cf-html-field:contains(Yes)", this)).length) {
      count++;
   }
});
于 2012-12-02T19:00:37.640 に答える
0

jQueryセレクターに頼るのではなく、おそらくもっとドロップダウンするでしょう。例: http://jsfiddle.net/hRVQK/

$(document).ready(function() {
    var answers = [];
    $('.ce-cf-html-field').each(function () {
        answers.push($(this).text().indexOf('Yes') != -1);
    });
    var half = Math.round(answers.length/2);
    var answersFirstHalf = answers.slice(0, half);

    var countFirstHalf = 0;
    $(answers.slice(0, half)).each(function () {
        if (this == true)
            countFirstHalf++;
    });

    var count = 0;
    $(answers).each(function() {
        if (this == true)
            count++;
    });

    console.log('count', count, 'count first half', countFirstHalf);
});

</p>

于 2012-12-02T19:06:31.693 に答える
0

助けてくれてありがとう、しかしここに私が見つけた解決策があります。

var $secondHalf = $(".ce-modal-container .ce-cf-container:lt(2)"),
    $searchFirstHalf = $secondHalf.find($spanYes).length;

あなたが知りたい場合に備えて。

于 2012-12-02T18:58:13.093 に答える