Frage

Ich arbeite an einer Auswahl -Dropdown -Liste. Diese Liste fügt alle ausgewählten Elemente (von einem Benutzer) in einen Container <div> in Form von versteckten Feldern hinzu. Diese Auswahl hat einen Link, mit dem der Benutzer die Option zum Entfernen aus dem Auswahlbehälter entfernen kann. Jedes Mal, wenn eine neue Auswahl getroffen wird, bindet der Code automatisch eine Funktion, in der die Auswahl geändert wird, wenn der Benutzer auf den Link zur Wiederholung klickt, so etwas wie folgt:

<Div id = "selectedCategories">
Kategorie 1 Remove_link
<Eingabe type = "Hidden" value = "9524" name = "recordIds [] /> < /div>
<Selech>
<option> Kategorie Nr. 2 < /Option>
<option> Kategorie #3 < /Option>
< /select>

Jedes Mal, wenn eine neue Auswahl aus der Dropdown-Liste erfolgt, müssen alle zuvor ausgewählten Elemente mit der Löschfunktion "neu gepflegt" werden Bindung, wenn ein neuer hinzugefügt wird.

Dies funktioniert sehr gut in Fire Fox und Safari, aber sie funktionieren überhaupt nicht für IE. Obwohl ich für jedes ausgewählte Element jedes Mal wieder basiert, gehen alle Bindungen verloren und das einzige, das funktioniert, ist das allerletzte Element, das ich mit der Löschfunktion hinzugefügt und gebunden habe.

Meine Frage ist: Gibt es eine Working dafür oder wie gehe ich dieses Problem an? Leider ist der IE der am häufigsten verwendete Internetbrowser da draußen :(

Vielen Dank

War es hilfreich?

Lösung 3

Ich habe die Live -Funktion ohne Glück benutzt, vielleicht mache ich etwas falsch. Was für mich funktioniert hat, war die Funktion, die Funktion zu entbinden, bevor Sie eine andere Funktion hinzufügen oder neu erbenten.
Wenn ich also eine Funktion an das Klickereignis wie dieses binden.



 $('#deleteRecord1').bind('click',function() 
   { 
        // function here ...
   }
 );

$ ('#deleterecord2'). Bind ('klick', function () {// Funktion hier ...});


Später, wenn ich Record1 lösche1 Ich muss diese Methode in den Record2 wiederholen. Ich werde es so tun, damit sie in IE 7 und 8 funktioniert



 $('#deleteRecordId').unbind('click');
 $('#deleteRecordId').bind('click',function() 
   { 
        // function here ...
   }
 );

In diesem Fall bezieht sich die "ID" auf eine eindeutige ID, die jedes diese ausgewählt hat, in diesem Beispiel der Nummer 2.

Andere Tipps

Sind Sie sicher, dass Sie die richtige Version von JQuery verwenden, um die Live -Funktion zu verwenden? Es ist relativ neu, daher müssen Sie sicherstellen, dass Sie die neueste Version verwenden.

Du kannst den ... benutzen live() Funktion, um an jede Instanz eines Elements auf der Seite, der Gegenwart und der Zukunft zu binden. Dies rettet Sie, wenn Sie wieder neu sind.

$("a.removeLink").live("click", function() {
  $(this).next("input").remove();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top