2012-07-20 17 views
1

我正在利用jquery填充一些divs与图像。当我点击一个jstree节点时,div应该填充。它可以工作,但有时我的图像调用会回到空白事件,尽管目录中有图像。jQuery的一些url调用是空的

下面是一段代码,显示我在做什么:

}).bind("select_node.jstree", function (event, data) { 

var ImgTeamA; 
ImgTeamA = "img/"+node_id+"-teamA.png"; 
myImg1 = new Image; 
myImg1.src=ImgTeamA 

alert(myImg1.width); 
alert(myImg1.src) 

$("#div1").html(myImg1).css("border","1px solid"); 

问题是这样的。尽管myImg1存在于img目录中,但alert(myImg1.width)有时会显示为0.当我再次单击节点时,div1显示图像。它是零星的。有时单击会显示图像,有时我必须双击该节点。任何人都可以给我一些指导如何解决这个问题。

+0

什么是'src'当宽度为0说呢? – 2012-07-20 13:28:51

+0

直到它完全加载到DOM中,才能计算图像的宽度。(http://stackoverflow.com/q/3877027/901048) – Blazemonger 2012-07-20 13:29:19

回答

0

它在浏览器中加载,尝试像之前你不能获得图像的宽度:

}).bind("select_node.jstree", function (event, data) { 
    var myImg1 = new Image; 
     myImg1.src = "img/"+node_id+"-teamA.png"; 
     myImg1.onload = function() { 
      alert(myImg1.width); 
      alert(myImg1.src); 
     } 

    $("#div1").html(myImg1).css("border","1px solid"); 
}); 
+0

这仍然不会始终有效。 [缓存的图像不会触发'load'事件](http://stackoverflow.com/q/3877027/901048)。 – Blazemonger 2012-07-20 13:31:12

+0

@Blazemonger - 应该通过检查图像是否有宽度来解决。编辑我的答案? – adeneo 2012-07-20 13:33:32

+0

它使用'new Image',所以它不需要在DOM中渲染,只需要加载。 – adeneo 2012-07-20 13:36:29