使用 jQuery 获取元素的真实宽度

2024-03-21

我正在为 html 文件的“视觉正确性”编写一个验证器。目标是检测太宽的元素。

这是我的问题的演示。 http://jsfiddle.net/vv68y/2/

红色虚线表示文档的最大宽度(本例中为 200px)。第一段很好,但第二段太宽了。尽管如此,以下所有命令仍然返回“200px”作为宽度:

// all return 200, but the value should be larger   
$('#two').width();
$('#two').outerWidth();
$('#two').prop('clientWidth');

请参阅Fiddle http://jsfiddle.net/vv68y/2/更多细节。

我怎样才能检测到这种超大的元素?

更新的问题:更好地问,我如何检测超出其父元素边框的文本?

更新后的要求:我不允许更改源 HTML 或 CSS 中的任何内容。但我可以用 jQuery 做任何我想做的事情来修改文档,这样我就可以检测到那些太宽的元素。


正如其他人所说,暂时将文本节点包装在内联元素中。

var two = document.getElementById('two'),
    text = two.firstChild,
    wrapper = document.createElement('span');

// wrap it up
wrapper.appendChild(text);
two.appendChild(wrapper);

// better than bad, it's good.
console.log(wrapper.offsetWidth);

// put it back the way it was.
two.removeChild(wrapper);
two.appendChild(text);

http://jsfiddle.net/vv68y/12/ http://jsfiddle.net/vv68y/12/

这里有一个getInnerWidth应该对您有用的功能。向其传递一个元素,它将处理包装和展开。

function getInnerWidth(element) {

    var wrapper = document.createElement('span'),
        result;

    while (element.firstChild) {
        wrapper.appendChild(element.firstChild);
    }

    element.appendChild(wrapper);

    result = wrapper.offsetWidth;

    element.removeChild(wrapper);

    while (wrapper.firstChild) {
        element.appendChild(wrapper.firstChild);
    }

    return result;

}

http://jsfiddle.net/vv68y/13/ http://jsfiddle.net/vv68y/13/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 jQuery 获取元素的真实宽度 的相关文章

  • JavaScript 事件循环:队列、消息队列、事件队列

    阅读了大量 JavaScript 事件循环教程 我看到了不同的术语来标识当调用堆栈为空时准备由事件循环获取的队列存储消息 Queue 消息队列 事件队列 我找不到规范术语来识别这一点 甚至 MDN 似乎也对此感到困惑事件循环页面 https
  • javascript 中的正则表达式和分隔符

    我不太擅长正则表达式 我需要一些帮助 但我被困住了 这就是我得到的 编辑 现在工作正常 看看 http jsfiddle net oscarj24 qrPHk 1 http jsfiddle net oscarj24 qrPHk 1 这就是
  • Javascript:一般访问函数参数

    这是我所拥有的 var log function arg1 arg2 console log inside arg1 arg2 var wrap function fn return function args console log be
  • 从 PDF 转换为 HTML [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Jquery 选择器中的冒号

    我最近将 jquery 从 1 4 更新到 2 1 并开始出现错误 在我的代码中 我有一部分通过 id 选择元素 jQuery id name 这会产生一个错误 但是之前没有错误 1 4 如果我转义冒号 错误就会消失 他们在最新版本中添加了
  • JavaScript switch 语句是线性的还是恒定时间的?

    我的网站上有以下 JavaScript 以便在执行某些特定搜索时 答案会被硬编码到特定页面 function redirect var input document getElementById searchBox value toLowe
  • 嵌套最小高度不起作用

    我有一个固定大小的绝对定位区域 其中滚动条包含可变大小的内容 现在我需要将内容包装在两个 div 中 这两个 div 至少与区域一样大 但会扩展以适合内容 div div div div content div div div div 要求
  • 如何更改 angularjs $http.jsonp 的标头

    我读了document http docs angularjs org api ng 24http 但我想我一定是误解了 http defaults headers jsonp Accept application json http js
  • 如何选择与绝对定位 DIV 重叠的选项?

    我有一个绝对定位的 div 它的作用类似于工具提示 当鼠标悬停在某个元素上时 它会显示 然后在鼠标移开时隐藏 我有几个
  • 从右到左打印表格单元格

    我制作了一个表格 并希望第一个单元格从右侧开始 而不是默认从左侧开始 我尝试更改 CSS 中的 float 属性 但似乎没有帮助 这是代码 table border 0 width 100 cellspacing 0 align cente
  • 样式表何时添加到 document.styleSheets

    我正在尝试使用 javascript 动态添加 css 样式表规则 例如示例 2here https developer mozilla org en DOM CSSStyleSheet insertRule 它在大多数情况下都有效 但似乎
  • 使用标签强制关闭 IE 兼容模式

    我正在为一个在所有 Intranet 站点上强制使用兼容模式的客户工作 我想知道是否可以在 HTML 中放入一个标签来强制关闭兼容模式 有 边缘 模式 http msdn microsoft com en en library cc8175
  • 用角度js中的字母过滤列表

    我在表格中显示了一个列表 我需要使用名称的第一个字母来过滤结果 在列表上方我有一个字母 A B C D 等等 单击后 字母列表将按名字过滤 例如 列表详细信息是Apple Boy Bridge点击后A Apple将显示 我必须过滤国家名称以
  • Mapbox 关闭除一层之外的所有图层

    我是 Mapbox 和 javascript 的新手 我试图稍微修改一下 Mapbox GL 代码示例 发现here https www mapbox com mapbox gl js example toggle layers 允许打开
  • 为什么“jQuery-Rails”经常位于资产组之外

    为什么我经常看到gem jquery rails之外的 assets group group assets do gem sass rails gt 3 1 0 gem coffee rails gt 3 1 0 gem uglifier
  • 时间序列折线图与轴不同步

    本实验基于这个d3官方例子 http bost ocks org mike path 我想要实现的是可视化时间序列数据的最后 x 分钟 我有这个代码的副本jsfiddle http jsfiddle net 225dC 3 单击以添加新数据
  • 如何在 AngularJS 中设置选择选项中的文本格式?

    我有以下 json 对象 scope values id 2 code Code 1 name Sample 1 id 4 code Code 2 name Sample 2 id 7 code Code 3 name Sample 3 在
  • 静态资源和非静态资源有什么区别?

    我主要是一名前端开发人员 设计师 但最近我一直在探索端到端解决方案 昨天 我使用平均堆栈完成了一个 TODO 应用程序 并想开始探索我的 VPS 的部署选项 话虽这么说 有人建议我使用 nginx 作为反向代理来提供静态资源 不幸的是 我陷
  • codemirror - 在编辑器内检测并创建链接

    我正在使用 codemirror 配置为显示 javascript 我有这样的代码 var ref http www example com test html var ref2 http www example com test2 htm
  • 理解“窗口”对象[重复]

    这个问题在这里已经有答案了 可能的重复 JS 窗口全局对象 https stackoverflow com questions 10035771 js window global object 如何window对象工作 我知道它是顶级对象并

随机推荐

  • 如何将变量从 PHP 传递到 Python?

    我可以从 a 传递一个变量吗 php脚本到Python反之亦然 例如 myPHPScript php hello hello myPythonScript py print get the result from hello variabl
  • Android Studio 错误:增量输出目录应设置为输出目录

    我导入了一个github项目 https github com caarmen poet assistant https github com caarmen poet assistant到我的 Android Studio 当我单击 Ma
  • 如何更改菜单栏的字体颜色?

    如何更改 QML 菜单项的文本颜色MenuBar import QtQuick 2 4 import QtQuick Controls 1 3 import QtQuick Window 2 2 import QtQuick Dialogs
  • 在查询中使用变量表名

    有时我需要运行相同的 SQL Server 脚本 每次将每个表名称中的一两个字母更改为每次运行脚本时都不同的值 如何在脚本开头设置一次 这样我就不需要更改每个表名 这是该脚本的一个简化示例 实际上它包含更多的表 SELECT FROM T
  • Python:从url获取shoutcast/网络广播电台的名称

    我一直在尝试根据 python 中的 url 获取网络广播电台的名称 标题 但到目前为止还没有运气 网络广播电台似乎使用 HTTP 之外的其他协议 但如果我错了 请纠正我 例如 http 89 238 146 142 7030 http 8
  • CodeIgniter、模型、ORM,怎么处理?

    我从 CodeIgniter 开始 在 Google 中潜入几个小时后 我有点困惑 让我们尝试用一个简单的例子来解释我的问题 我有一个表 car 其中包含字段 name 和 color 因此我想要一个 php 类 Car 这样我的代码最终看
  • AWS Elastic Beanstalk:在运行 PHP 的 EC2 实例上终止 HTTPS

    我想在我的单实例 EBS 环境上允许 https 连接 我按照以下链接中的步骤操作 http docs aws amazon com elasticbeanstalk latest dg https singleinstance php h
  • 字符串作为决策树/随机森林中的特征

    我是机器学习新手 现在我正在做一些关于决策树 随机森林应用的问题 我正在尝试解决一个以数字和字符串 例如国家 地区名称 为特征的问题 现在 scikit learn 库仅接受数字作为参数 但我想注入字符串以及它们携带大量知识 我该如何处理这
  • ipython笔记本单元格的背景颜色

    如何更改 iPython Notebook 中特定单元格的背景颜色 例如 我正在编写一本手册 我想在灰色文本框中添加一些终端命令 如下所示http ipython org ipython doc 1 interactive nbconver
  • React Native - 如何像 iOS 或 Instagram 一样进行模糊视图?

    模糊背景透明度 是否可以在不使用背景图像的情况下模糊视图 我想展示家长内容在上面背景模糊视图 in modal 类似这样的 尝试过反应本机模糊 https github com react native community react na
  • Linq lambda 表达式 - 查找一周中距离当前日期(现在)最近的一天

    例如 我将星期一 星期四和星期日作为抽奖日期 使用 Linq Lambda 查找与 Datetime Now 最接近的 dayOfWeek 的方法是什么 我使用正常功能完成了此操作 但我想知道如何使用 Linq Lambda 来完成此操作
  • 在 webapp 中优雅地关闭 ExecutorService?

    在我的网络应用程序中 我创建了一个使用ExecutorService具有固定大小的线程池 我重复使用相同的ExecutorService在整个应用程序生命周期内 private static ExecutorService pool Exe
  • 如何创建一个内容为表达式结果的有限迭代器?

    我想创建一个Iterator通过 重复 评估表达式来获取下一个元素 并且我希望表达式能够返回某个值来终止它 我唯一发现的就是这样迭代器 continually http www scala lang org api current inde
  • Python有限差分函数?

    我一直在 Numpy Scipy 中寻找包含有限差分函数的模块 然而 我发现的最接近的是numpy gradient 这对于二阶精度的一阶有限差分很有用 但如果您想要更高阶的导数或更准确的方法 则效果不太好 我什至还没有找到很多专门用于此类
  • 如何在客户端读取excel文件内容?

    在 JSP 页面中 我需要浏览 excel 文件 在系统上选择文件后 我需要读取该 excel 文件内容并填写表格 目前我已经尝试使用下面的代码 但它只能在 IE 中工作 并对 ActiveXObject 的 IE Internet 选项进
  • 使用 java poi 从 Office 2007+ 文档中读取属性集

    我尝试从 Office 2007 文档 docx xlsx 读取属性集 找到了惊人的解决方案http poi apache org hpsf how to html http poi apache org hpsf how to html
  • postgresql 生成无间隙的序列

    我必须 必须为发票创建唯一的 ID 我有一个表 ID 和这个唯一编号的另一列 我使用序列化隔离级别 使用 var seq SELECT invoice serial 1 FROM invoice WHERE type type ORDER
  • 导航器.userAgent

    我正在尝试检测浏览器是否是 Safari 如果是这样 那就做点什么吧 在所有其他浏览器中 执行其他操作 if navigator userAgent toLowerCase indexOf safari 1 if safari execut
  • 感叹号在数据类型中起什么作用?

    我是 Haskell 的新手 今天我阅读了 OpenGL 源代码 发现了这个 data VertexArrayDescriptor a VertexArrayDescriptor NumComponents DataType Stride
  • 使用 jQuery 获取元素的真实宽度

    我正在为 html 文件的 视觉正确性 编写一个验证器 目标是检测太宽的元素 这是我的问题的演示 http jsfiddle net vv68y 2 红色虚线表示文档的最大宽度 本例中为 200px 第一段很好 但第二段太宽了 尽管如此 以