使用 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 获取元素的真实宽度 的相关文章

  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • jquery从变量中删除html元素

    我将 html 保存在变量中 var itinerary events today html 我有很多 html 和一个按钮我想删除 它的 ID 为 myButton 如何从变量中保存的 html 中删除它 我建议这种方法 var itin
  • 在javascript中解析json - 长数字被四舍五入

    我需要解析一个包含长数字的 json 在 java servlet 中生成 问题是长数字被四舍五入 当执行这段代码时 var s x 6855337641038665531 var obj JSON parse s alert obj x
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 在 webpack 2.x 中使用 autoprefixer 和 postcss

    如何使用autoprefixer使用 webpack 2 x 以前 它曾经是这样的 module loaders test scss loader style css sass postcss postcss gt return autop
  • Iframe 相对路径挑战

    我有一个页面 在页面内有一个 Iframe 目录如下 Folder1 Folder2 IframeCSS IframeCSS Css iframePage1 html stuff css parentPage1 html 在 iframeP
  • 如何在使用页面锚点导航时设置“激活”类以在 Angular 2 中引导导航栏?

    我正在使用 Angular 2 和 Bootstrap 4 创建一个单页网站 我创建了一个始终位于页面顶部的导航栏组件 并且我正在使用页面锚点导航 id 请注意 我还没有创建路由模块 到目前为止还没有必要这样做 导航栏代码如下
  • 动态img(或视频)标签根本不加载资源,HTTP请求处于“待处理”状态

    我尝试使用以下方法在 Web 应用程序上加载资源时遇到一些问题img or videoHTML 标签 我在我的应用程序中使用 Angular 并动态设置src的参数img标签 使用ng src src 指示 没有那么多图像和资源需要加载 在
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 使用 JQuery 更改元素的顺序

    有人知道我做错了什么吗 我正在尝试更改某些图像的显示顺序 我希望每次按下按钮时图像都会向右 向左移动一个位置 这是我尝试过的 但没有运气 任何帮助或见解将不胜感激 rightShift click function img hide var
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 如何在类似控制台的环境中运行 JavaScript?

    我正在尝试遵循这里的示例 http eloquentjavascript net chapter2 html http eloquentjavascript net chapter2 html and print blah 在浏览器中运行时
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • Safari 支持 JavaScript window.onerror 吗?

    我有一个附加到 window onerror 的函数 window onerror function errorMsg url line window alert asdf 这在 firefox chrome 和 IE 中工作正常 但在 s
  • 如何在jquery中以相反的顺序迭代元素? [复制]

    这个问题在这里已经有答案了 我是jquery的新手 我想知道如何使用each 在jquery中以相反的顺序迭代表单元素 任何帮助 将不胜感激 尝试这个 input get reverse each function
  • 为什么元素上的负底部边距会降低该元素父元素的高度?

    这可能是由于边距折叠造成的 我知道边距折叠 至少知道它如何影响相邻元素 但我不明白当涉及负边距时它如何在嵌套元素上工作 例如 在此标记和随附的 CSS 中 Markup div class parent div class child Ch
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • 在 React.js 中编辑丰富的数据结构

    我正在尝试为数据结构创建一个简单的基于网格的编辑器 但我在使用 React js 时遇到了一些概念问题 他们的文档对此没有太大帮助 所以我希望这里有人可以提供帮助 首先 将状态从外部组件传输到内部组件的正确方法是什么 是否有可能将内部组件中
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp
  • CSS 是否有不等于选择器?

    CSS中有类似 不等于 的东西吗 例如 我有以下代码 input 但对于某些输入 我需要将其作废 我想通过将类 reset 添加到输入标签来做到这一点 例如

随机推荐

  • 如何将变量从 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 第一段很好 但第二段太宽了 尽管如此 以