jquery 获取html <img /> 位置时出错问题

如图所示,这样端口小图片都是通过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 /> 位置时出错问题的更多相关文章
- JS /JQuery 获取变量为数字时 容易出错 可能不是数字类型
Javascript内置函数,原型为parseInt ( String s , [ int radix ] ),用于解析一个字符串,并返回一个整数. var $prod_kucun=$(this).n ...
- jQuery 获取元素当前位置offset()与position()
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- Jquery获取元素的位置
$(".curr_play").position().left //元素距离父级元素左侧位置 $(".curr_play").offset().left //元 ...
- jQuery滚动到特定位置时出现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- IOS8解决获取位置坐标信息出错(Error Domain=kCLErrorDomain Code=0)(转)
标题:IOS8解决获取位置坐标信息出错(Error Domain=kCLErrorDomain Code=0) 前几天解决了在ios8上无法使用地址位置服务的问题,最近在模拟器上调试发现获取位置坐标信 ...
- jquery 获取元素在浏览器中的绝对位置
代码详解 1,获取对象(自定义调整打开新窗口参照元素) var obj = $("#oButton"); 实例中我获取的对象是弹出窗口按钮,这样创建的新窗口就会根椐按钮的位置进行调 ...
- jquery获取html元素的绝对位置和相对位置
jquery获取html元素的绝对位置坐标和相对父元素的位置坐标方法:绝对位置坐标:$("#elem").offset().top$("#elem").offs ...
- [转载]JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
在ajax中经常需要对元素的位置进行精确的定位,此时不仅需要获取元素自身的大小位置等属性.还需要知道页面.浏览器.滚动条等的长度和宽度.因为浏览器的兼容问题,如果使用javascript获取这些数值是 ...
- [0] 分析 EntityName 时出错。 行 2,位置 *。
1. 报错内容“若要在加载设计器前避免可能发生的数据丢失,必须纠正以下错误: ” “分析 EntityName 时出错. 行 2,位置 *.” 2. 如图: 3. 解决方案:查看项目全路径,是否有 ...
随机推荐
- PHP 登录DEMO
logintest.php 页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- Codeforces Round #245 (Div. 2) C. Xor-tree DFS
C. Xor-tree Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/430/problem/C ...
- Linux Kernel 4.9 & BBR
https://www.mxgw.info/t/linux-kernel-4-9-bbr.html?utm_source=tuicool&utm_medium=referral
- java内存分配 常量池详解
http://www.cnblogs.com/qinqinmeiren/archive/2011/07/19/2151683.html
- 全面的framebuffer详解一
转:http://blog.chinaunix.net/uid-20628575-id-72534.html 一.FrameBuffer的原理 FrameBuffer 是出现在 2.2.xx 内核当中 ...
- .NET:动态代理的 “5 + 1” 模式
背景 什么叫“动态代理”,代理模式我们都知道,动态代理就是动态生成的代理(采用Emit). 重量级的ORM和IOC产品离不开动态代理,作为开发人员,多数情况不用关注动态代理的内部实现机制,但是了解其一 ...
- 黑马day16 jquery入门
jquery: 1.jQuery 对象就是通过jQuery包装DOM对象后产生的对象. jQuery对象是jQuery独有的.假设一个对象是jQuery对象,那么它就能够使用jQuery里的方法:$( ...
- cocos2d-x:将iOS项目编译成Andriod项目
来源:http://www.cnblogs.com/angzn/p/3328049.html 一.Android 环境搭建 1.安装Andriod-NDK(Native Development Kit ...
- go语言基础之有参有返回值函数的使用
1.有参有返回值函数的使用 示例1: package main //必须 import "fmt" //go官方推荐写法 func MaxAndMin(a, b int) (max ...
- hadoop常见问题总结1
本文地址:http://www.cnblogs.com/archimedes/p/hadoop-problem1.html,转载请注明源地址. 问题1:http://localhost:50030 H ...