2016-06-16 4 views
-2

Ich habe nie tiefgehend studiert JQuery, wegen meiner Faulheit und des Zeitmangels; also, selbst wenn ich es benutze und ich in der Lage bin, etwas "nettes" daraus zu machen, gibt es immer noch einige "dunkle Seiten" über JQuery.Anderes Verhalten einer Funktion beim Platzieren in einer HTML-Seite und in einer JS-Datei

Ich habe diese Funktion in einer HTML-Seite platziert, auf dinamically Titel, Text, Tasten etc. im Inneren des Bootstrap-modalen Popup:

<script> 
$(".inizializzaModal").click(function(){ 
    $.idForm = $(this).attr("data-id-form"); 
    $.idTitle = $(this).attr("data-modal-title"); 
    $.idBody = $(this).attr("data-modal-body"); 
    $.pulsanteOkTesto = $(this).attr("data-modal-pulsante-ok"); 
    $.pulsanteNoTesto = $(this).attr("data-modal-pulsante-no"); 

    $("#modalDinamicTitleSpan").remove(); 
    $(".modal-title").append("<span id='modalDinamicTitleSpan'>" + $.idTitle + "</span>"); 

    $("#modalDinamicBodySpan").remove(); 
    $(".modal-body").append("<span id='modalDinamicBodySpan'>" + $.idBody + "</span>"); 

    $("#pulsanteOk").css("visibility", "hidden"); 
    if($.pulsanteOkTesto != null){  
     $("#pulsanteOk").css("visibility", "visible");  
    } 

    $("#pulsanteNo").css("visibility", "hidden");  
    if($.pulsanteNoTesto != null){  
     $("#pulsanteNo").css("visibility", "visible");  
    }  
}); 

</script> 

Alles funktioniert. Dann habe ich versucht, diese Funktion auf eine meiner JS Datei zu verschieben und die Funktion funktioniert nicht mehr. Ich musste meine Funktion zu "$(document).ready()" in meiner JS-Datei hinzufügen.

Warum gibt es diese zwei unterschiedlichen Verhaltensweisen der gleichen Funktion (einmal in der HTML-Seite platziert und ein in der JS-Datei gespeichert).

Danke in adavnce

+1

Nicht genügend Informationen richtig zu beantworten Im Einzelnen , wie dieser Code in die HTML-Datei eingebettet wurde, was macht Sie glauben, es anders in einer externen JS-Datei sein muss. – Jamiec

+3

möglich, dass Sie es am unteren Rand der HTML-Datei geschrieben. & daher hat es funktioniert. –

+1

vielleicht weil DOM-Element wasn ‚t bereit, in dem Sie die js-Datei enthalten Wenn Sie es in Kopfteil enthalten und verwenden document.ready nicht -Das ist das Problem – sTx

Antwort

1

es in der Größenordnung ab. wahrscheinlich Sie Ihre js im Kopf laden - so es vor das HTML und das Element kommt kann das Click-Ereignis anhängen nicht gefunden werden.

die $(document).ready() wartet auf den kompletten DOM bereit sein - so dass alle HTML-Elemente dann vorhanden sind.

e:... Es wird in der Regel alle Skripte im Boden zu laden (vor dem <body> -schließende Tag auf dieser Weise Rendering der Seite verzögert wird, nicht durch den Skript Laden empfohlen

+0

Ich sehe, danke Mann – MDP

Verwandte Themen