2013-04-17 4 views
6

Ich habe eine Rasierer-MVC-Web und ein paar Auswahl auf einem Formular. Ich binde diese wählen mit der select2 wie dies in jQuery-Plugin:Wie kann ich jquery select2 an neue hinzugefügte Selects binden?

$('select.company_select, select.positions_select').select2(); 

Und meine Form ist eine Ajax-Form (Ajax von Javascript, nicht von Ajax.BeginForm). Die Sache ist, dass, wenn ich das Formular absende, ich ein anderes Formular mit den submited Werten des ersten Formulars hinzufüge, aber die Auswahl auf diesem neuen Formular wird das select2 plugin nicht anwenden. Ich weiß, dass dies normal ist, weil das neue Element und sollte mit .on() oder .Live() gebunden werden, aber ich weiß nicht, wie es geht.

Können Sie mir dabei helfen?

+3

Sie können keine Delegation mit Plug-in verwenden, müssen Sie Ihre select2 Elemente innerhalb der Ajax-Callback-Funktion –

Antwort

0

Sie Ajax-Aufruf tun, so stellen Sie sicher, dass die Auswahl wieder init auf, was andere wählt man für jede neue Auswahlboxen auf der Seite in komplett wollen ..

so Ihre Ajax-Aufruf etwas aussehen

$.ajax({ 
    url: '.../', 
    data..., 
    type..., 
    success: function(data) 
    { 
     $('#newFormAddedID select').select2(); 
    } 

sollte es tun .. Sie es auch tun können, in vollständig:. Funktion (... wenn das Formular unabhängig von hinzugefügt wird, ob der ajax-Aufruf erfolgreich ist oder nicht

1

Verwendung ajaxcomplete

$(document).ajaxComplete(function(){ 
    $(".select2").select2(); 
}); 
+1

Nizza Lösung initialisieren, aber nur zugänglich für die Select eine Ajax-Anforderung kommt durch. Aber nicht für Selectboxen, die dynamisch ohne Ajax erstellt wurden. – algorhythm