jQuery: supprimer des éléments à partir de l'actuel

J'ai une question à propos de la suppression de tous les éléments après l'actuel.

voici le scénario:

J'ai un emplacement de l'arborescence de mes utilisateurs doivent parcourir pour arriver à une valeur spécifique. J'ai un SELECT qui se charge du haut-niveau de la localisation via ajax. Les données ont plus granulaire des valeurs afin de limiter la sélection vers le bas, afin d'ajouter un nouveau SÉLECTIONNER en fonction de ce que l'utilisateur a choisi. Lorsque l'utilisateur arrive à la fin des options disponibles pour les données, j'ai arrêter l'ajout de sélectionner et saisir la valeur de la dernière, qui est ce que je suis après.

La façon dont j'ai codé ce est de commencer avec un SELECT qui a le haut niveau de l'emplacement ID-câblé, puis ont un 'onchange' gestionnaire d'événement qui sort de ma base de données et attrape les enfants pour la sélection, en crée de nouveaux sélectionnez dans l'état actuel des TD.

Ce qui se passe jusqu'à ce que les enfants ne sont pas retournés pour le dernier choix. À ce point, je peux obtenir l'ID de cet emplacement final.

Cela fonctionne très bien JUSQU'à ce que l'utilisateur décide de changer quelque chose une ou deux choisit "en amont".

Voici une illustration de ce qu'un utilisateur qui a obtenu vers le bas à l'emplacement de l'arbre (ce sont des Sélectionne dans le code):

États-unis -> Ohio -> Cuyahoga -> Cleveland -> District 1

si circonscription de 1' est le dernier produit disponible dans cette chaîne d'endroits, je peux l'obtenir en utilisant $('#emplacements, sélectionnez:last').val(). Wunderbar.

Ce qui ne fonctionne pas si bien, c'est si l'utilisateur décide de, "Hmm, non, c'est pas Cuyahoga je suis après, mais Stow", et les changements de la troisième sélectionnez l'option. Ce dont j'ai besoin à faire est de supprimer tous les sélectionne APRÈS select qui a des "Cuyahoga', puisque j'ai maintenant d'aller à l'extraction des données supplémentaires pour "Ranger". Tout sélectionne après l'avant choix ne sont plus valides.

Le select qui est manipulé passe lui-même dans l'événement onchange, de sorte que j'ai de l'élément actuel. J'ai essayé $(elem).après().remove(), mais qui ne fonctionne pas.

Des idées sur comment je peut supprimer toutes les Sélectionne après l'actuel?

Merci!

La structure de la doc ressemble à quelque chose comme ceci:

<table border id="loctable">
  <tr><th>Location:</th><td><select id="loc0" onchange="return UpdateLocationSelect(this);">
    <option>choose..</option>
    <option value="3">USA</option>
    </select>
  </td>
  </tr>

[snip]

function UpdateLocationSelect(elem) {
    //load sub locations for PPID given. IN this case, locations under USA. add options to elem
    //Also, erase any selects after this one, in case the user has "backed up" his selection

    $(elem).next().remove();  //Help needed here!! how to remove any SELECTs after this one??

    $.ajax({
        url: "api.php",
        dataType: "json",
        data: { cmd: "sublocs", "pid": elem.value },
        async: false,
        success: function( data, textStatus ) {
            //results
            if( $(data).length ) {
                $('#loctable td').append( "<select onchange='return UpdateLocationSelect(this);'><option>choose..</option></select>");
                $.each( data, function( key, val ){
                    $('#loctable select:last').append( '<option value="'+key+'">'+val+'</option>' );
                });
            }
            else
            {
                //we've hit the end of this location branch. Alert to check val is right
                alert( "LocID: " + $('#loctable select:last').val() );
            }
        },
      });
      return false;
    }

OriginalL'auteur AaplMike | 2012-07-09