js,延迟一个功能

时间:2016-01-24 22:03:13

标签: javascript jquery

所以,我有两个js函数:

首先js追加一个新的div容器。 第二个js对这个新的div做了一些事情:

示例:

my_html = '<div class="second"></div>'
jQuery('.first').html(my_html);
jQuery('.second').html("Yay");

这是问题所在。第二个js函数依赖于类"second"的存在。

然而,两者都在my_html被填充之前运行,所以我永远不会得到“yay”作为结果。

有没有办法以某种方式延迟直到第一个功能完成? (意思是有第二个div)。

修改

这是代码(请假设所有代码都有效)

 var THIS_FUNCTION= function (data) {           
    MY_VAR.push("some data");
    alert("before: " + MY_VAR);
 };
 if (//Some condition met) {            
    alert("first function");
    SOME_FUNCTION(THIS_FUNCTION);           
 }; 
 alert("After: " + MY_VAR); 

这是我得到的警报序列:

Alert 1: "first function"
Alert 2: "After:"
Alert 3: "before: some data"

"before"警报应首先出现,但我最后会收到警报。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

你不需要做任何事情,它应该有用,这里是jsfiddle link that proves your example works without changes

但是,您也可以这样做:

my_html = '<div class="second"></div>'
$(my_html).filter(".second").html("Yay").appendTo(".first");

这是link for the second example

答案 1 :(得分:-1)

至于推迟:

setTimeout(yourFunction, 1);

同样在您的示例中,您可以在第一个查询对象之后链接而不是启动第二个选择器:

jQuery('.first').html(my_html)
      .filter('.second').html("Yay");