Я использую плагин jQuery и в опции " onFinish " я делаю некоторую логику. Ничего особенного. См. Ниже. У меня есть div, который я создал в скрипте с именем $ message, затем перебираю список переключателей с классом .daily_persons. Если какой-либо из радиоисточников не соответствует моему условию, я добавляю тег абзаца к начальному div. На данный момент проблем нет.
Проблема заключается в том, что начальный div используется для отображения диалога, только если он не пуст. Я пробовал много вещей, дети-джеки, имеет ("р") длину; Кажется, что ничто не работает if($message.size()>0)
всегда оценивается как 1 > 0 = true
onFinish: function() {
var $message = $('<div title="Sessions Not Available"></div>');
$('.daily_persons:checked').each(function() {
var mylimit = 0;
var $this = $(this);
$.get("<?php echo base_url();?>register/chackSessAvaiable",
{ id: $this.val()}, function(data) {
$this.attr('area') == "biksha" ? mylimit = 3 : mylimit = 10;
if (!(data < mylimit)) {
$message.append("<p>"+$this.attr('humandate')+"</p>");
$this.prop("checked", false);
$this.prop("disabled", true);
updateCost();
}
});
});
if ($message.size() > 0) {
$message.dialog({
resizable: false,
modal: true,
width: 350,
buttons: {
"OK": function() {
$(this).dialog("close");
$message.html('');
}
}
});
} else {
alert("proceed");
}
}
Есть идеи?
Итак, все, что вам нужно, это сделать асинхронный вызов aync: false, как это
onFinish: function(){
var $message = $('<div title="Sessions Not Available"></div>');
$('.daily_persons:checked').each(function(){
var mylimit = 0;
var $this = $(this);
$.ajax({
type: 'GET',
url: "<?php echo base_url();?>register/chackSessAvaiable",
data: { id: $this.val()},
success: function(data){
$this.attr('area')=="biksha" ? mylimit = 3 : mylimit = 10;
if(!(data < mylimit)){
$message.append("<p>"+$this.attr('humandate')+"</p>");
$this.prop("checked", false);
$this.prop("disabled",true);
updateCost();
}
},
dataType: "json",
async:false
});
});
alert($message.children().length);
}
<p>
в $ message DIV. Но так как вы добавляете<p>
tgs в функцию обратного вызова $ .get (), вы можете проверить это здесь. Настройте свою логику внутри обратного вызова $ .get (), а затем нет необходимости проверять, пусто ли сообщение $ или нет. Потому что да, $ .get () является асинхронным