2016-04-28 5 views
1

Ich habe zwei Auswahllisten und basierend auf dem ausgewählten Index von beiden muss ich die Option an diesem Index aus beiden Listen entfernen.Entfernen Sie die Option aus der ausgewählten Liste basierend auf dem Index?

Ich habe ein Beispiel gesehen, dies für die aktuell gewählte Option mit der Funktion remove() zu tun, aber das würde nur für eine Liste funktionieren, da die andere Liste möglicherweise eine andere Option ausgewählt oder gar nicht hat.

Wissen nur den Indexwert ist es möglich, dies mit JavaScript/jQuery zu tun? Ich habe bereits den Code, der herausfindet, aus welcher Liste der Index entnommen werden soll, um diesen Indexwert zu erhalten. Ich habe gerade keine Möglichkeit gefunden, einen Indexwert für das Entfernen anzugeben.

-Code entwickelt, basierend off Kommentar:

function RemoveCode(codeType) 
{ 
    var selectedProjectsField = $("#SelectedProjects"); 
    var selectedProjectCodesField = $("#SelectedProjectCodes"); 
    var selectedTasksField = $("#SelectedTasks"); 
    var selectedTaskCodesField = $("#SelectedTaskCodes"); 
    var selectedOptionIndex; 

    if (codeType == "Project") 
    { 
     selectedOptionIndex = $("#SelectedProjects :selected").index(); 
    } 
    else 
    { 
     selectedOptionIndex = $("#SelectedTasks :selected").index(); 
    } 

    alert(selectedOptionIndex); 

    selectedProjectsField.eq(selectedOptionIndex).remove(); 
    selectedTasksField.eq(selectedOptionIndex).remove(); 
} 
+3

'$ ('wählen Sie die Option') eq (Index) .remove();' – Tushar

+0

@Tushar Das ist nicht zu funktionieren scheint, ist die Option am angegebenen Index ist Nicht entfernt. Habe ich deinen Kommentar nicht verstanden? – Matthew

+0

Haben Sie überprüft, ob Sie den korrekten Index erhalten? – Tushar

Antwort

1

Verwenden der :eq() Selector

Sie könnten den :eq() Selektor die durch Index ein bestimmtes Element zielen und dann remove() nennen es aus dem DOM zu entfernen:

// Syntax Example: This will remove then (index)th option element 
$('select option:eq(index)').remove(); 

Also in Ihrem Fall, Sie würden einfach Ihre selectedOptionIndex in den Selektor verketten möchten Selektor eine der folgenden Ziel:

// Remove a specific option of your SelectedProjects element 
$('#SelectedProjects option:eq(' + selectedOptionIndex + ')').remove(); 

Beispiel

Sie können see an interactive example here und unten gezeigt.

enter image description here

+0

Was ist 'index' hier? - ** string ** – Tushar

+0

'index' wäre ein tatsächlicher numerischer Index. Aber da Sie es in einem Selektor verwenden, ist jQuery wirklich egal. –

+0

Huh? Musst du es dir nicht vorstellen? '$ ('Option auswählen: eq (' + index + ')')' – Tushar

-1

Dieser Code funktionieren sollte:

$('#SelectedProjects option')[index].remove(); 
$('#SelectedTasks option')[index].remove(); 

oder

selectedProjectsField.find('option')[selectedOptionIndex].remove(); 
selectedTasksField.find('option')[selectedOptionIndex].remove(); 
+0

Das Wechseln zu 'selectedProjectsField [selectedOptionIndex] .remove();' gibt den Fehler "Die Eigenschaft kann nicht entfernt werden 'undefined oder Nullreferenz" – Matthew

+0

@Matthew Ok, dann habe ich das zweite Stück Code für Sie hinzugefügt. – lamp76

+0

@ lamp76I bekomme das "Objekt unterstützt nicht richtig oder Methode 'entfernen'" mit der zweiten Option. Ich bin mir sicher, dass ich etwas von meinem Reh verpasse, aber ich arbeite unter Rions Antwort, also muss ich weitermachen. Danke für Ihre Hilfe. – Matthew

Verwandte Themen