Hay una manera fácil de hacer nextUntil, de forma que el elemento coincidente por el selector está incluido? Yo tengo esta, que sólo está bien si hay un hermano anterior:

$("#content").find("h3:first").prev().nextUntil("ul:last").wrapAll("<div id='collapse'></div>");
Puedes actualizar tu pregunta con las partes relevantes de su lenguaje de marcado HTML? Esto nos ayudaría a entender lo que usted está tratando de lograr.

OriginalEl autor jwinn | 2012-03-02

7 Comentarios

  1. 20

    Quitar .prev() y uso .addBack() al final de su selector como se muestra a continuación:

    $("#content").find("h3:first").nextUntil("ul:last").addBack().wrapAll("<div id='collapse'></div>");

    Pre 1.8 deben utilizar andSelf en lugar de addBack

    Nunca había aceptado una respuesta a esta pregunta vieja. FYI, nadie la comprobación de esto ahora: «andSelf() – Nota: Esta función ha quedado obsoleto y es ahora un alias .addBack(), que debe utilizarse con jQuery 1.8 y más tarde».
    Acabo de descubrir esta respuesta el día de hoy ( 21-07-2017 ) y me ayudó en mi proyecto , ty

    OriginalEl autor Vadim

  2. 1

    La solución que encontré fue la de obtener el length utilizando nextUntil (o prevUntil), a continuación, utilizar slice() con esta longitud + 1 en nextAll():

    var inclusiveNextUntil = $(this).nextUntil( '.some-class' ).length;
    var inclusiveNextUntil = $(this).nextAll().slice( 0 , inclusiveNextUntil + 1 );

    Es torpe, pero funciona. HTH

    Fwiw en el nextAll docs Biziclop menciona la adición de + *:

    $obj.nextUntil('.last-item-to-include + *')  

    pero este no me funciona :/

    OriginalEl autor Oli Studholme

  3. 1

    Aquí es lo que yo hago. Creo que es un poco más limpio que otras sugerencias.

    var elearr = $('selector1').nextUntil('selector2');
    var lastele = elearr[elearr.length-1];
    elearr.push($(lastele).next());

    OriginalEl autor BStep

  4. 0
    var s = $("li.start").nextUntil("li.stop");
    s = s.add(s.last().next()).add(s.first().prev());
    //and do whatever you need to with s

    El más intuitivo, creo. Todos hechos con jQuery métodos.
    No hay necesidad de buscar dos veces. Fácil de entender y fácil de recordar.

    OriginalEl autor zhristov

  5. 0

    Creo que la respuesta correcta es

    $("#content").find("h3:first").nextUntil("ul:last").addSelf().wrapAll("<div id='collapse'></div>");

    OriginalEl autor Hillar Kapsta

  6. 0

    Como respondido por otros, utilizando .addSelf() es la solución para hacer que el elemento inicial inclusiva.

    $("#content").find("h3:first").nextUntil("ul:last").addSelf().wrapAll("<div id='collapse'></div>");

    Y para hacer el final de elemento integrador, mediante el .nextUntil(".class + *") método resuelto el problema.

    $("#content").find("h3:first").nextUntil("ul:last + *").addSelf().wrapAll("<div id='collapse'></div>");

    OriginalEl autor Justintosh

  7. -1

    por supuesto, usted puede, sólo tiene que utilizar jQuery nextAll.

    ‘nextAll’ incluirá los siguientes elementos de coincidencia de que el selector.

    mientras que ‘nextUntil’ excluir la coincidencia de selector de elemento.

    «siguiente» sólo obtiene el único siguientes hermano, mientras que yo soy el acaparamiento de todos los hermanos, hasta un final definido punto.
    sí tienes razón, el cambio de mi respuesta.
    -1: desde nextAll() ref: Obtener todos los siguiente los hermanos de cada elemento en el conjunto de elementos coincidentes, opcionalmente filtrada por un selector. de manera que esto no incluir el elemento coincidente.

    OriginalEl autor Shlomi Komemi

Dejar respuesta

Please enter your comment!
Please enter your name here