Jquery-(ajax async:true)元素大小没有响应

Jquery - (ajax async:true) element size not responding

本文关键字:响应 元素 ajax async true Jquery-      更新时间:2023-09-26

我使用的是jQuery插件,在"onFinish"事件选项中,我正在执行一些逻辑操作。没什么太花哨的。如下所示,我有一个div,它是我在名为$message的脚本中创建的,然后我用类.daily_persons迭代一个单选按钮列表。如果任何一个单选元素不符合我的条件,我会在初始div上附加一个段落标记。到目前为止没有问题。

问题是,只有在对话不为空时,才使用初始div来显示对话。我尝试了很多东西,孩子们,有("p")长度;似乎什么都不起作用,因为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");                    
    }   
}

有什么想法吗?

所以所需要的就是让我的ajax调用async: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);
            }