如何在动态创建元素"div"准备就绪后调用函数



我有一个流星应用程序,我在其中创建了一些div元素并将它们添加到一个模态中。当我创建它们时,我通过jquery的.css(left:.., top:..)方法将它们定位在模态上。之后,我调用另一个函数,该函数在这些创建的div之间创建行(通过使用JSplumb插件)。

我的问题是,Jsplumb试图画这些线,如果我的div元素位于左上角的模态。换句话说,当我调用绘图线函数时,它不知道我在模态上动态创建的元素的位置。因此,我需要等待,直到div元素的创建完成。

所以,我创建div元素函数的简化版本是:
ConnectStates.prototype.constructResultSets=function(){
    var sourceResultEntity=$('<div>').attr('id','fooID').addClass('fooClassName');
    var sourceResultSetTitle=$('<div>').addClass('title').text(this.sourceStates[i]);
    var connect=$('<div>').addClass('ep');
    sourceResultEntity.append(sourceResultSetTitle);
    sourceResultEntity.append(connect);
    sourceResultEntity.css({left:($('.sourcePart').width()/2, top:70});
    // source part is a div inside modal-body
    $('.sourcePart').append(sourceResultEntity);
}
然后调用draw line函数
ConnectStates.prototype.connectResultSets=function(){
    // this is only one line, giving id of divs, nothing is important here
}

我的div被放置在正确的位置,但是应该在它们之间的那行被放置在错误的位置

也许我不理解你的问题,但你为什么不使用流星呢?

    用div的内容创建一个模板

    <template name="dynDiv">
      <div id="fooID" class="{{dynClassValues}}" ... ></div>
    </template>

  • 在if子句中插入模板
  • 
        <#if showDynDiv>
            {{> dynDiv}}
        </if>
    
    
  • 使用模板函数钩入
  • 
        Template.dynDiv.onRendered(...
    
    

    希望这是你的选择

    最新更新