如图所示,这样端口小图片都是通过jquery html()方法设置的(参数html就是画整个图片的html字符串),如图:

但是出现图片没有完全渲染完的问题,如图:

从图中可以看出在代码运行到断点的时候,图中的下行小图片是没有渲染完成的。

然后公司同事李蕾猜测可能是上行图片加载快有缓存所以都显示出来,但是下行图片和上行图片不是同一个图片,所以还没有显示出来,于是就出现这样的问题,如图:

如图所示,这些图标是根据小图片位置画出来的,代码如下:

//画hub图
var drawnHub = function () {
var p;
for (var i = 0; i < portarr.length; i++) {
var count = portarr[i].id.split('_')[3]; //获取端口绑定数量
var s = $("#" + portarr[i].id);
p = s.position(); //获取坐标点
if (portarr[i].imgclass == "zwimg24") {
p.left += 100;
}
if (portarr[i].imgclass == "zwimg48") {
p.left += 10;
}
//console.log("id=" + portarr[i].id + ",left=" + p.left + ",top=" + p.top);
if (portarr[i].state == "up") {
s.before("<div style='width:30px;position:absolute;z-index:1;left:" + (p.left + 15) + "px;top:-40px'><div style='width:1px;height:40px;background-color:#273239'></div>" +
"</div><img style='cursor:pointer;width:30px;height:30px;position:absolute;left:" + (p.left) + "px;top:-65px' src='../Images/network_hub_up.png' onclick='openPortDlg(\"" + portarr[i].click + "\")' />" +
"<div style='width:30px;text-align:center;position:absolute;left:" + (p.left) + "px;top:-75px'>" + count + "</div>");
} else {
s.before("<div style='width:30px;position:absolute;left:" + (p.left + 15) + "px;top:31px'><div style='width:1px;height:40px;background-color:#273239'></div>" +
"</div><img style='cursor:pointer;width:30px;height:30px;position:absolute;left:" + (p.left) + "px;top:64px' src='../Images/network_hub_down.png' onclick='openPortDlg(\"" + portarr[i].click + "\")' />" +
"<div style='width:30px;text-align:center;position:absolute;left:" + (p.left) + "px;top:87px'>" + count + "</div>");
}
}
//console.log("======================================================");
};

我们再把问题走一遍:jquery .html()方法设置<img>的时候下行图片没有渲染完成,上行渲染完成,于是再画hub(就是图片上的白色图标)的时候上行的坐标位置能获取到,但是下行图标位置获取不到,所以就出现这样的错乱问题,那么现在的问题就是如何解决这个问题,按照我的思路就是图标没有显示,但是我们可以用一个div 或者其它的标签放到<img>的上层定位,这样不就可以了吗,就算img没有渲染完成,但是上层已经渲染完成了,我可以根据上层渲染完成的位置画hub这样就ok了,果然,问题就是这样解决的,如本篇文章一开始的图片,上面显示的<li>就是当作<img>的上层,这样显示就没有问题了。

写下这篇文章是预防以后出现类似的问题,也给友友们提供解决方法参考。

jquery 获取html <img /> 位置时出错问题的更多相关文章

  1. JS /JQuery 获取变量为数字时 容易出错 可能不是数字类型

    Javascript内置函数,原型为parseInt ( String s , [ int radix ] ),用于解析一个字符串,并返回一个整数. var $prod_kucun=$(this).n ...

  2. jQuery 获取元素当前位置offset()与position()

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...

  3. Jquery获取元素的位置

    $(".curr_play").position().left //元素距离父级元素左侧位置 $(".curr_play").offset().left //元 ...

  4. jQuery滚动到特定位置时出现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. IOS8解决获取位置坐标信息出错(Error Domain=kCLErrorDomain Code=0)(转)

    标题:IOS8解决获取位置坐标信息出错(Error Domain=kCLErrorDomain Code=0) 前几天解决了在ios8上无法使用地址位置服务的问题,最近在模拟器上调试发现获取位置坐标信 ...

  6. jquery 获取元素在浏览器中的绝对位置

    代码详解 1,获取对象(自定义调整打开新窗口参照元素) var obj = $("#oButton"); 实例中我获取的对象是弹出窗口按钮,这样创建的新窗口就会根椐按钮的位置进行调 ...

  7. jquery获取html元素的绝对位置和相对位置

    jquery获取html元素的绝对位置坐标和相对父元素的位置坐标方法:绝对位置坐标:$("#elem").offset().top$("#elem").offs ...

  8. [转载]JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合

    在ajax中经常需要对元素的位置进行精确的定位,此时不仅需要获取元素自身的大小位置等属性.还需要知道页面.浏览器.滚动条等的长度和宽度.因为浏览器的兼容问题,如果使用javascript获取这些数值是 ...

  9. [0] 分析 EntityName 时出错。 行 2,位置 *。

    1. 报错内容“若要在加载设计器前避免可能发生的数据丢失,必须纠正以下错误: ”   “分析 EntityName 时出错. 行 2,位置 *.” 2. 如图: 3. 解决方案:查看项目全路径,是否有 ...

随机推荐

  1. IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) C. Bear and Up-Down 暴力

    C. Bear and Up-Down 题目连接: http://www.codeforces.com/contest/653/problem/C Description The life goes ...

  2. codeforces 148E Aragorn's Story 背包DP

    Aragorn's Story Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/probl ...

  3. 前端UED网站汇总

    爱词霸UED团队 MED | 营销展现研究专家 携程UED-携程旅行前端开发团队 支付宝前端开发车间 Taobao UED Team: 淘宝网用户体验团队博客,有关用户体验设计和研究的经验分享. - ...

  4. PHP格式化金钱函数

    实现目的: 对数字进行格式化,以类似¥10,000,000的格式输出. 实现方法: function doFormatMoney($money){ $tmp_money = strrev($money ...

  5. MySQL MyISAM和InNodb备份与恢复技巧

    1. 为什么要备份数据库 对数据库来说,最重要也最容易被忽视的就是备份.由于不可预测性,偶然的事件可能会导致非常惨重的损失. 数据越是重要,数据的变化越频繁,备份越发需要经常进行. 备份周期根据不同业 ...

  6. Installshield 2010 中集成. Net framework4 与 vc++ 2010运行安装包

    1.prq的地址,通过以下地址,下载相应的prq文件 VC 2010 redist X86: http://saturn.installshield.com/is/prerequisites/micr ...

  7. EntityFramework:再谈 “如何映射聚合?”

    背景 在之前的文章中<DDD:使用EntityFramework的话,如果只为聚合根设计仓储,其它实体如何处理?>,我介绍了如何映射聚合以保证其语义,当时的结论是:聚合内除了聚合根之外的实 ...

  8. [Android Pro] Android7.0系统 关于Android获取流量计数TrafficStats.getUidRxBytes(uid)和TrafficStats.getUidTxBytes(uid)返回-1解决方案

    reference : http://blog.csdn.net/zhangyong7112/article/details/54574214 最近一个关于流量的项目在Android7.0系统的手机上 ...

  9. HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。

    IIS的根节点->右侧"ISAPI和CGI限制"->把禁止的DotNet版本项设置为允许,即可.

  10. iOS:下拉刷新控件UIRefreshControl的详解

    下拉刷新控件:UIRefreshControl 1.具体类信息: @interface UIRefreshControl : UIControl //继承控制类 - (instancetype)ini ...