2012-08-31 5 views
5

Also versuche ich die Chosen jQuery plugin auf eine Auswahlbox anzuwenden, nachdem sie über XAJAX geladen wurde. Hier ist der Code:jQuery "Gewählt" für Select Boxes - wie man Styling anwendet, nachdem AJAX das select Element geladen hat

Normalerweise ich beim Laden der Seite zu starten, und alle Auswahlbox mit der Klasse richtig gestylt geeignet:

$(document).ready(function() {   
    $(".chzn-select").chosen(); 
}); 

Als nächstes habe ich eine Funktion, die XAJAX verwendet das neue Auswahlfeld anzuzeigen im angegebenen DIV auf der Seite. Das funktioniert gut. Wie auch immer, es ist nicht von Chosen so gestaltet, wie es sein sollte.

Ich habe versucht, eine Verzögerung dort auch hinzuzufügen, weil ich in einigen Foren las, dass das für einige Leute arbeitete. Es funktioniert nicht ....

function getNewSelect(property_id){ 
    xajax_getNewSelect(); 
    $(".chzn-select-ajax").delay(5).chosen(); 
} 

Hat jemand irgendwelche Ideen?

+0

lösen werde ich $ tat (“Chosen-Container ") .width ('100%') nach der Einstellung gewählt() –

Antwort

4

Was macht xajax?

delay verzögert nur Animationen, hat keine Auswirkungen auf andere Funktionen.

Wenn Sie eine Funktion nutzen verzögern wollen. Für mich

setTimeout(function() { $(".chzn-select-ajax").chosen(); }, 500); 
+0

Ich habe einen Link für xajax hinzugefügt, lass mich das ausprobieren. – Shackrock

+0

Wenn ich die Verzögerung lang genug, funktioniert das, aber es sieht lächerlich aus ... Wenn die Verzögerung zu kurz ist, funktioniert es nicht. Irgendwelche anderen Ideen? – Shackrock

+1

Dann müssen Sie einen Rückruf im xajax-Aufruf hinzufügen, der dies auslöst, wenn Sie fertig sind. Ich wusste nicht, dass Xajax asynchron ist. – Ariel

1
<script language="javascript" type="text/javascript"> 
    $(function() { 
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(loadControlDuringAjax); 
     loadControlDuringAjax(); 
    }); 
    function loadControlDuringAjax() { 
     $(".chzn-select").chosen(); $(".chzn-select-deselect").chosen({ allow_single_deselect: true }); 
    } 
</script> 

Dies funktioniert gut

Hoffnung das Ihr Problem