dom元素样式更改后如何调用函数Javascript/jquery

2024-01-02

我已经浏览了多个示例,并实现了示例所述的相同行为。

页面加载后,如果 dom 元素的样式发生变化,我需要触发一个方法。

即使我在浏览器控制台中更改任何内容,样式更改事件也应该触发。该事件将显示为“无”和“显示块”。

在我的代码中,如果在浏览器控制台中进行更改,则不会触发更改方法。

这是我尝试过的:

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


$('p').bind('style', function(e) {
    console.log($(this).attr('style'));
});
p {
    display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p> test </p>

你可以使用变异观察者 https://developer.mozilla.org/en/docs/Web/API/MutationObserver:

Demo:

// create an observer instance
var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
        var oldDisplay = (mutation.oldValue + '').match(/display:\s*(\w*)/);
        oldDisplay = oldDisplay ? oldDisplay[1] : '';
        if (oldDisplay !== mutation.target.style.display) {
            console.log('element', mutation.target.id, 
                    'style.display=', mutation.target.style.display);
        }
    });    
});
 
// attach the observer to the elements of interest:
$('p').each(function () {
    observer.observe(this, { 
        attributes: true, 
        attributeFilter: ['style'],
        attributeOldValue: true
    });
});

// test it, by changing style.display through button clicks:
$('button').click(function() {
    $('p').toggle(); // show/hide
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="p1"> test this </p><button>hide/show</button>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dom元素样式更改后如何调用函数Javascript/jquery 的相关文章

随机推荐

  • PostgreSQL JDBC 连接在 Android 4.0 上失败

    有谁知道我该怎么做才能使 JDBC 连接在 Android 4 0 上工作 它在 Android 1 6 2 3 上运行良好 我使用 Dave Cramer 的构建 http groups google com group pgandroi
  • 有没有办法观看 WPF 路由事件?

    我想知道是否有一种方法可以监视 WPF 应用程序中引发的所有 RoutedEvent 一种将有关触发到控制台的事件的一些信息写入控制台的方法将非常适合查看正在发生的情况 我找到了另一种方法 我已将其添加到我的用户控件的加载处理程序中 var
  • 列出多个 $query->set 的正确方法

    列出多个 query gt set 的正确方法是什么 我可以拥有多个 query gt set就像下面的 代码 A 或者我应该将它们合二为一 如果是 您将如何将这三者结合起来 query gt set代码 我尝试将它们组合在下面的 代码 B
  • JavaScript 搜索问题

    我有一段代码可以在表格中搜索某个短语 一旦找到该短语 它就会将当前单元格的innerHTML 返回到页面顶部附近的div 我遇到的问题是这样的 除非要搜索的短语包含任何特殊字符 括号和与号等 否则代码可以完美运行 我尝试修改 Western
  • 返回文件列表的 Python Flask 应用程序

    我有一个基本的 Flask 应用程序 用于从 Pod 获取日志 我想在查询未完成时使用 send from directory 我不想创建 zip 文件并列出它 而是想列出通过查询生成的日志文件 from flask import Flas
  • 如何启动短信应用程序

    我想打开短信应用程序复制朋友的一些短信 我不是在创建短信 如何使用 Swift 代码启动 iPhone 短信应用程序 我遇到下面的代码用于启动邮件应用程序但不起作用 UIApplication sharedApplication openU
  • 警告:类路径中的 Kotlin 运行时 JAR 文件应具有相同的版本

    我收到以下警告 但我不确定 v1 0 6 位于何处 这个错误是否有可能来自 Kotlin 库 其中包含旧的 Kotlin 版本 有什么想法可以修复它 或者至少我如何遵循建议使 kotlin reflect 显式化 1 1 看来您的项目是以您
  • Azure:Microsoft.Compute 资源提供商卡在“注册”大约一天

    我尝试过取消注册并重新注册 但它总是卡住 我看不到日志 所以我真的不知道该怎么做 有谁之前经历过这个吗 似乎存在一些问题 现在已得到缓解 检查您的服务运行状况 资源运行状况页面 服务运行状况 服务问题视图显示 Azure 服务中任何正在影响
  • Julia FixEffectsModels IV 回归与 R IV 回归不匹配

    当我在 R 和 Julia 中运行 我认为是相同的回归 时 我得到了非常不同的结果 我认为这是因为 IV 回归使用一个指示变量来检测另一个指示变量 但我无法弄清楚我是否做错了什么 我尝试了几种不同的方法 但数据是这样开始的 rc D tau
  • 如何剪切任意形状的纹理?

    我正在渲染复杂的 3D 对象 这是一个类似球体的简单示例 接下来 我将剪切平面应用于这些对象 并在该平面上渲染纹理 给人一种您正在查看对象内部的印象 就好像它被切片一样 例如 问题是纹理的锯齿状边缘 它将伸出表面的边界 这是另一个角度 你可
  • 导入错误:没有名为 django.core.wsgi 的模块(ubuntu)

    我按照本指南为我的 Django Web 应用程序配置 apache https docs djangoproject com en 1 9 howto deployment wsgi modwsgi basic configuration
  • 在 Node.js 中调整图像大小的简单方法? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 从文件系统加载数据后 值得使用哪种模型来调整图像大小并返回客户端 fs readFile process env OPENSHIFT
  • 如何使用 servlet 创建 CSV 文件?

    我想从以下位置下载 CSV 文件servlet 我在对象数组中有数据 object 我需要将其写入CSV并下载 你能帮我如何在 servlet 类中做到这一点吗 How can Object 曾经表示过 CSV 数据吗 它包含一行多列还是多
  • 经典 ASP 中的线程休眠?

    我正在对用经典 ASP VbScript 编写的旧应用程序进行一些修改 它具有向应用程序的成员发送电子邮件的功能 但由于成员列表相当大 因此在发送前一百封左右后 服务器会拒绝新的电子邮件 我已经编写了一些代码 让它能够突发发送 20 封电子
  • Python中的栈是什么?

    Python 中的 堆栈 是什么 是CPython的C栈吗 我读到Python 堆栈帧是在堆中分配的 但我认为堆栈的目标是 堆栈堆栈帧 那么堆栈做什么呢 Python的栈帧是在堆上分配的 但它们相互链接形成一个堆栈 当函数a调用函数b th
  • 我应该通过什么方式检查 JNI 中的异常?

    我们知道 JNI 中的很多方法都可能会引发异常 并且异常引发后无法调用 从而可能导致 JVM 崩溃 我们不仅可以使用 ExceptionOccurred 或 ExceptionCheck 来确定是否发生异常 还可以简单地检查不等于 NULL
  • 如何在 Python 中从包含 N 行的 csv 文件创建嵌套字典

    我正在寻找一种方法将具有未知列数的 csv 文件读取到嵌套字典中 即用于输入表格 file csv 1 2 3 4 1 6 7 8 9 10 11 12 我想要一本以下形式的字典 1 2 3 4 6 7 8 9 10 11 12 这是为了允
  • 有没有一种安全的方法可以从Python中的线程创建子进程?

    我正在使用一些现有代码 这些代码创建了许多不同的工作线程 然后这些线程又使用子进程 多重处理调用一些 shell 脚本 据我所知 这是一个禁忌 因为互斥锁可能会在 exec 发生之前嵌入子进程的解释器中 这是一个合理的担忧吗 如果是这样 是
  • 更改 Oracle 客户端注册表中的 NLS_LANG 设置的影响

    我们正在从 NET Microsoft oracle 驱动程序迁移到 ODP NET 驱动程序 我们遇到的问题之一是这个错误 ORA 12705 无法访问 NLS 数据文件或指定的环境无效 我们能够通过修改注册表和更改设置来阻止错误 看到这
  • dom元素样式更改后如何调用函数Javascript/jquery

    我已经浏览了多个示例 并实现了示例所述的相同行为 页面加载后 如果 dom 元素的样式发生变化 我需要触发一个方法 即使我在浏览器控制台中更改任何内容 样式更改事件也应该触发 该事件将显示为 无 和 显示块 在我的代码中 如果在浏览器控制台