Search code examples
zeptosizzle

Getting next sibling with class in zepto


Normally this would not be a problem, but this time I don't control the dom. Anyway

<dt>foo</dt>
<dd>bar</dd>
<dd>bar
    <div id="myElem">baz</div>
</dd>
<dd>bar</dd>
<dd>bar</dd>
<dd class="moo">bar</dd> <-- I want to get this one
<dd>bar</dd>
<dd>bar</dd>
<dd class="moo">bar</dd>
<dd>bar</dd>
<dd>bar</dd>

Here is what I have tried

$('#myElem').closest('dd').next('.moo').something();
$('#myElem').closest('dd').nextUntil('.moo').something();

However non of these get the next sibling with the class.

Anyone know how to traverse this?


Solution

  • Try

    $('#myElem').closest('dd').nextAll('.moo:first').something();
    

    or

    $('#myElem').closest('dd').nextUntil('.moo').next().something();
    

    I don't know zepto but from a quick check of the docs it doesn't look like you can do it with a simple chain. Try

    var $dd = $('#myElem').closest('dd');
    var $moo = $dd.next();
    while (!$moo.is('.moo')){
        $moo = $moo.next();
        if ($moo.length == 0) break;
    }
    

    DEMO