Java-скрипт запускается при разборе. Вот почему мы используем $(document).ready()
в качестве обработчика событий для выполнения кода после загрузки dom. И именно поэтому ваш глобальный еще не заполнен. Например, $(window).load()
будет запускаться после $(document).ready()
, поскольку первый будет ожидать загрузки всего контента, а второй - только dom. Поэтому этот код работает.
var string = "";
$(window).load(function(){
alert(string);
console.log("im forth after the alert and filled with the ready value: " + string);
});
$(document).ready(function(){
$("#button").click(function(){
console.log("I'm on click: " + string);
});
string = "I'm filled";
console.log("im third and filled with the ready value: " + string);
});
console.log("im first but empty: " + string);
string = "initial value";
console.log("im second but filled with an initial value: " + string);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="button">Button</Button>
Редактировать: Добавлено несколько распечаток на консоли, чтобы показать, что происходит
Edit2: Ваш код должен быть примерно таким.
var result = '';
$( document ).ready(function() {
$( function() {
$( "#draggable" ).draggable({ snap: ".baseline, .BF, .AF"});
$( "#draggable2" ).draggable({ snap: ".baseline, .font"});
$( "#draggable3" ).draggable({ snap: ".baseline, .font"});
$( "#selectable" ).selectable();
});
$( "#selectable" ).selectable({
stop: function() {
$('.ui-selected').each(function() {
result += $(this).text();
});
$("#result").html(result);
$("#harf").html(result);
}
});
$( "#draggable, #draggable2, #draggable3" ).draggable({
drag: function() {
alert(result);
}
});
});