是否可以收听“风格改变”事件?

2023-12-26

是否可以在 jQuery 中创建一个可以绑定到任何样式更改的事件侦听器?例如,如果我想在元素更改尺寸或样式属性中的任何其他更改时“执行”某些操作,我可以执行以下操作:

$('div').bind('style', function() {
    console.log($(this).css('height'));
});

$('div').height(100); // yields '100'

这真的很有用。

有任何想法吗?

UPDATE

很抱歉自己回答这个问题,但我写了一个可能适合其他人的简洁解决方案:

(function() {
    var ev = new $.Event('style'),
        orig = $.fn.css;
    $.fn.css = function() {
        $(this).trigger(ev);
        return orig.apply(this, arguments);
    }
})();

这将临时覆盖内部prototype.css方法并在最后使用触发器重新定义它。所以它的工作原理是这样的:

$('p').bind('style', function(e) {
    console.log( $(this).attr('style') );
});

$('p').width(100);
$('p').css('color','red');

自从提出问题以来,事情发生了一些变化 - 现在可以使用变异观察者 https://developer.mozilla.org/en/docs/Web/API/MutationObserver检测元素“style”属性的变化,不需要 jQuery:

var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutationRecord) {
        console.log('style changed!');
    });    
});

var target = document.getElementById('myId');
observer.observe(target, { attributes : true, attributeFilter : ['style'] });

传递给回调函数的参数是突变记录 https://developer.mozilla.org/en/docs/Web/API/MutationObserver#MutationRecord允许您获取旧样式值和新样式值的对象。

支持的是在现代浏览器中表现良好 http://caniuse.com/mutationobserver包括 IE 11+。

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

是否可以收听“风格改变”事件? 的相关文章

随机推荐

  • 仅显示垂直线的表格

    我需要一种方法来仅显示表格中的垂直线 我尝试将 border left 和 border right 添加到表格和单独的 td 中 两者都带有 1pxsolid red 但它不会添加边框颜色 所以我正在寻找一种创建这些垂直线的简单方法 Us
  • 如何在 SQL Server 中拆分字符串并将值插入到表中

    我有一个像这样的字符串 72594206916 2 1 2 08 Tacoma WA 72594221856 5 5 7 13 San Francisco CA 72594221871 99 12 30 12 Dallas TX 这基本上是
  • 用于创建应用程序注册的服务主体权限

    我使用服务主体作为 azure cli 的登录项 该服务主体的角色是 所有者 我正在尝试运行 az ad app list and az ad app create display name Test application 2 并出现错误
  • 如何触及 HABTM 关系

    如果您有 2 个模型 视频和类别 并且它们彼此之间具有 has and belongs to many 关系 那么当其中一个模型发生更改时 如何执行触摸以使缓存失效 您不能像处理一对多关系那样 触摸 它们 现在 当我更改类别名称时 属于该类
  • 删除sql SELECT中的所有非数字字符

    我想在 SQL 中调用查询时删除所有非数字字符 我有一个函数 在函数中 我这样做 Declare KeepValues as varchar 50 Set KeepValues 0 9 While PatIndex KeepValues T
  • Android Retrofit导致Socket超时异常

    我正在 Android Galaxy S3 Nexus 7 设备上使用改造库对运行 Struts2 的 tomcat 服务器进行 POST 调用 POST 调用失败 tomcat日志显示Socket超时异常 使用通过curl 完成的完全相同
  • Core Data有回调方法吗?

    我想知道当核心数据实体中发生某些情况时是否有任何特殊的方法可以采取行动 这就是我在本案中的意思 我有一个文件名作为属性存储在核心数据实体中 当应用程序运行时 可能会发生具有此文件名的项目从核心数据中删除的情况 在这种情况下 我想要发生的是将
  • 嵌套的 std::transform 效率低吗?

    如果我有一个std string std string s hello 以及一个就地修改它的循环 如下所示 for auto c s c std toupper c 我可以用同等的东西替换它transform std transform s
  • 使用反射查找具有自定义属性的方法

    我有一个自定义属性 public class MenuItemAttribute Attribute 和一个包含一些方法的类 public class HelloWorld MenuItemAttribute public void Sho
  • 蒙特卡洛模拟代码:在 R 中生成给定大小的样本

    我首先使用以下代码生成 500 个 0 到 1 之间均匀分布的随机数的样本 set seed 1234 X lt runif 500 min 0 max 1 现在 我需要编写一个伪代码 为 MC 模拟生成 N 500 的 10000 个样本
  • PackageInstaller 完成(自我)更新后启动应用程序

    PackageInstaller 成功 自行 更新应用程序后 应用程序将关闭并且不会再次启动 可能重复 Android PackageInstaller 更新后重新打开应用程序 https stackoverflow com questio
  • Erlang 节点的数量可能/实用吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 1 Erlang 网络中可以存在的最大理论节点数是多少 理论 可能意味着 语言允许或不允许的任何内容 2 Erlang 网络中实际可以
  • 用于从故事板实例化的 UIViewController 扩展

    我正在尝试用 Swift 编写一个小扩展来处理 a 的实例化UIViewController来自故事板 我的想法如下 既然UIStoryboard的方法instantiateViewControllerWithIdentifier需要一个标
  • 为什么我们需要主干js或任何JS MVC框架?

    如果我们已经使用后端 MVC 框架 例如 Django 或 ROR 为什么还需要使用 JS MVC 框架 主干 我无法理解两个 MVC 框架的概念以及它们如何组合在一起 我认为所有前端相关文件或逻辑 html css js 都位于后端框架的
  • 如何获取 docker 镜像的准确日期?

    I run docker images并得到这样的东西 REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker io postgres latest a7d662bede59 2 weeks
  • 如何使用列标题引用 Google Apps 脚本电子表格中的单元格

    我有几个 Google 表格 可以连接并更新它们之间的单元格 现在我必须使用 R1C1 或 A1 类型引用来定义基于特定列的获取或设置单元格 如果添加新列 所有这些引用现在都会关闭 每个工作表的第一行都将列标题作为这些单元格中的值 我可以以
  • Solr 查询唯一整数字段

    我在 schema xml 中定义了一个字段
  • Django Forms clean() 方法 - 需要客户端的 IP 地址

    我正在重写 Django 表单上的 clean 方法 我想要访问客户端的 IP 地址 假设这是绑定表单 如果我有对请求对象的引用 我可以从 META REMOTE ADDR 轻松获取它 但是 我没有参考该请求 关于如何做到这一点有什么想法吗
  • 如何在 Keras 中实现自适应损失?

    我正在尝试使用 Keras 来实现中完成的工作通用的自适应鲁棒损失函数 https arxiv org abs 1701 03077 作者提供了处理困难细节的张量流代码 我只是想在 Keras 中使用他的预构建函数 他的自定义损失函数正在学
  • 是否可以收听“风格改变”事件?

    是否可以在 jQuery 中创建一个可以绑定到任何样式更改的事件侦听器 例如 如果我想在元素更改尺寸或样式属性中的任何其他更改时 执行 某些操作 我可以执行以下操作 div bind style function console log t