如何在动态创建" div"之后调用函数元素准备好了

时间:2015-10-21 14:43:19

标签: jquery html twitter-bootstrap meteor

我有一个流星应用程序,我在其中创建了一些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);
}

然后我调用绘制线函数

ConnectStates.prototype.connectResultSets=function(){
    // this is only one line, giving id of divs, nothing is important here
}

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

1 个答案:

答案 0 :(得分:0)

也许我不明白你的问题是正确的,但为什么不使用流星呢?

  1. 使用div的内容创建模板
  2. 
    
        <template name="dynDiv">
          <div id="fooID" class="{{dynClassValues}}" ... ></div>
        </template>
    
    
    
    1. 将该模板插入if子句
    2. 
      
          <#if showDynDiv>
              {{> dynDiv}}
          </if>
      
      
      
      1. 使用模板功能挂钩
      2. 
        
            Template.dynDiv.onRendered(...
        
        
        

        希望这是一个选择