当前位置: 首页 > 面试题库 >

在div更改时触发jQuery事件

堵泽宇
2023-03-14
问题内容

我有一个div,其内容可能会以各种方式更改:例如,可以通过innerHTML重新加载其整个内容,或者可以通过DOM方法添加节点。反过来,这可能是通过本地javascript发生的,也可能是通过调用jQuery
API或其他库间接发生的。

我希望在div的内容改变为执行一些代码,但我 绝对没有控制如何
将改变。确实,我正在设计一个可供其他人使用的小部件,他们可以自由选择自己喜欢的div内容。当此div的内部内容更改时,可能还必须更新小部件的形状。

我正在使用jQuery。有没有一种方法可以捕获该div的内容已更改但已发生的事件?


问题答案:

您可以使用DOMNodeInsertedDOMNodeRemoved检查是否添加或删除了元素。不幸的是,IE不支持此功能。

$('#myDiv').bind('DOMNodeInserted DOMNodeRemoved', function(event) {
    if (event.type == 'DOMNodeInserted') {
        alert('Content added! Current content:' + '\n\n' + this.innerHTML);
    } else {
        alert('Content removed! Current content:' + '\n\n' + this.innerHTML);
    }
});

更新资料

您可以使用保存初始内容和将来的更改.data()。这是一个例子。

var div_eTypes = [],
    div_changes = [];
$(function() {
    $('#myDiv').each(function() {
        this['data-initialContents'] = this.innerHTML;
    }).bind('DOMNodeInserted DOMNodeRemoved', function(event) {
        div_eTypes.concat(e.type.match(/insert|remove/));
        div_changes.concat(this.innerHTML);
    });
});

输出示例:

> $('#myDiv').data('initialContents');
"<h1>Hello, world!</h1><p>This is an example.</p>"
> div_eTypes;
["insert", "insert", "remove"]
> div_changes;
["<iframe src='http://example.com'></iframe>", "<h4>IANA — Example domains</h4><iframe src='http://example.com'></iframe>", "<h4>IANA – Example domains</h4>"]

更新2

您可能还想包括DOMSubtreeModified它,因为我发现了这一点,DOMNodeInserted并且DOMNodeRemoved如果innerHTML直接替换一个元素也不会触发。它仍然不能在IE中运行,但至少在其他浏览器中可以正常运行。



 类似资料:
  • 问题内容: 如果使用jQuery添加或更改CSS类,如何触发事件?更改CSS类是否会触发jQuery 事件? 问题答案: 每当您在脚本中更改类时,都可以使用A 引发自己的事件。 但是否则,没有什么办法可以在类更改时触发事件。仅在焦点离开输入已更改的输入后才触发。

  • 问题内容: 我想要类似的东西: 问题答案: 类更改时不会引发任何事件。另一种方法是在以编程方式更改类时手动引发事件: 更新 这个问题似乎正在吸引一些访问者,因此这里是一种更新方法,可以使用该方法而不必使用new修改现有代码: 请注意,只能用于更新的浏览器,特别是Chrome 26,FF 14,IE 11,Opera 15和Safari6。如果需要支持旧版浏览器,则需要使用我在第一个示例中概述的方法

  • 问题内容: 我在网站上使用jQuery,当某个div可见时,我想触发某些动作。 是否可以在任意div上附加某种“不可见”事件处理程序并在使div可见时运行某些代码? 我想要类似以下的伪代码: 在真正使contentDiv可见之前,将不会触发alert(“做某事”)代码。 谢谢。 问题答案: 您总是可以添加到原始的.show()方法中,这样您就不必在每次显示某些东西或需要它与遗留代码一起使用时都触发

  • 当用户滑动滑块时,我试图触发一个事件,当滑动停止时,该值会更改。根据jQuery文档,对于这种情况,事件是理想的选择。所以我正在尝试: 然而,我观察到,当我向右拖动滑块并再次将其拖回起点(页面加载时滑块的初始位置)时,警报仍会触发。这是jQuery错误吗?如果没有,我该如何解决这个问题?

  • 问题内容: 有什么方法可以在属性更改时触发事件(可能是自定义的)? 比方说,当IMG src更改或DIV的innerHtml吗? 问题答案: 注意:突变事件已从标准中删除,现已弃用。有关如何使用其替代内容的信息,请参见其他答案或文档。 您指的是DOM突变事件。浏览器对这些事件的支持较差(但正在改善)。jQuery的MutationEvents插件可能会为您提供一些帮助。

  • 问题内容: 我正在尝试创建一个表单,当选择选择元素“ parcel”时,它将显示一个div,但是当未选择时,我想隐藏div。这是我目前的标记: 到目前为止,这是我的HTML。 到目前为止,这是我的jQuery。 问题答案: 使用以下JQuery。