1

子要素 h2 の間のすべての .section 要素を取得する必要があります。私のコードはすべての要素を切り替えます。untilNext(ab) は、子孫 b を持つ要素まで選択していません。別のアプローチが必要ですか、それとも私が見ていない何か問題がありますか?

html: '

<div class='section' id='section-4'>
<div class='docs'>
  <div class='octowrap'>
    <a class='octothorpe' href='#section-4'>#</a>
  </div>
  <h2>todo     <br></h2>
   <p>main.html   <br></p>
</div>
<div class='code'>
  <div class="highlight"><pre><span class="n">colorific</span></pre></div>
</div>
</div>
<div class='clearall'></div>
<div class='section' id='section-5'>
<div class='docs'>
  <div class='octowrap'>
    <a class='octothorpe' href='#section-5'>#</a>
  </div>
  <p>containers  <br></p>
</div>
<div class='code'>

</div>
<div class='clearall'></div>
<div class='section' id='section-6'>
 <div class='docs'>
  <div class='octowrap'>
    <a class='octothorpe' href='#section-6'>#</a>
  </div>
  <h2>nextH2</h2>
 </div>
 <div class='code'>
  <div class="highlight"><pre><span class="n">blah</span></pre></div>
 </div>
 </div>
 <div class='clearall'></div>

に変換します。

great-grandparent <div class='section' id='section-18'>
   grandparent       <div class='docs'>
    parent        <div class='octowrap'>
        *          <a class='octothorpe' href='#section-18'>#</a>
        h2        <h2> </h2>

js:

$(function(){                                                                                                                      |   
$('.octothorpe').on({                                                                                                          |-  vimwiki_docs.py (/home/solver/webpag1)
    click:function(e){                                                                                                         |   
        e.preventDefault();                                                                                                    |-  vimwiki_docs.html (/home/solver/webpag1/docs)
        var $pfold = $(this).closest('.octowrap').siblings('p');                                                               |   
        var $cfold = $(this).closest('.docs').siblings('.code');                                                               |-  knowl.js (/home/solver/webpag1/docs)
        var $sector = $(this).closest('.section');                                                                             ||-   global
        var $h2 = $sector.nextUntil('.section > h2');                                                                          |||     knowl_id_counter
        //var $h2 = $sector.nextAll('div').each(function(){                                                                    ||  
        //  //this within iteration refers to h2 div element                                                                   ||-   function
        //  if ($(this).is('h2')) {                                                                                            |||     knowl_click_handler
        //      return false;                                                                                                  |   
        //  }})                                                                                                                |   ~                                              
                                                                                                                               |   ~                                              
        //});//close each()                                                                                                    |   ~                                              
        $pfold.toggleClass('fold');                                                                                            |   ~                                              
        $cfold.toggleClass('fold');                                                                                            |   ~                                              
        $h2.toggleClass('fold');                                                                                               |   ~                                              
            //console.log('h2', $h2)                                                                                           |   ~                                              
            //if (!$h2.hasClass("fold") && !$pfold.hasClass("fold") && !$cfold.hasClass("fold")) {                             |   ~                                              
            //  $cfold.slideUp().addClass('fold');                                                                             |   ~                                              
            //  $pfold.slideUp().addClass('fold');                                                                             |   ~                                              
            //  $h2.slideUp().addClass('fold');                                                                                |   ~                                              
            //}                                                                                                                |   ~                                              
            //else {                                                                                                           |   ~                                              
            //  $cfold.slideDown().removeClass('fold');                                                                        |   ~                                              
            //  $pfold.slideDown().removeClass('fold');                                                                        |   ~                                              
            //  $h2.slideDown().removeClass('fold');                                                                           |   ~                                              
            //}                                                                                                                |   ~                                              
                                                                                                                               |   ~                                              
    }});                                                                                                                       |   ~                                              

});

私は nextUntil と nextAll をそれぞれ試してみましたが、false を返しました...運が悪い!

どんな助けでも大歓迎です。ありがとう

4

1 に答える 1

0

私はこれを理解しました.jQuery APIに慣れていない他の誰かが同じ問題に遭遇した場合に備えて答えます: `

 var $sector = $(this).nextUntil('section:has(h2)').slice(0,-1);

`

  1. だから私は子の位置にh2を持っています。最も近いものを使用して、祖父母の div.section に移動できます。

  2. 今度は、子でもある次の h2 まで検索したいと思います。すべての要素を最初に一致させたい場合は、nextUntil() を使用します。{コメントで提案されているように、必要なセットではなく、検索しているすべてのアイテムを取得します}

    nextUntil() は兄弟のみを選択します。したがって、 has() を使用して子/子孫を選択します。

  3. 最後の要素をスライスする必要がありました。section:not(:last) で遊んだのはあまり運がなかったので、jQuery でスライスを発見したことで作業が簡単になりました。

于 2013-08-29T04:08:39.787 に答える