【问题标题】:determine when contents of html tag changes判断html标签的内容何时改变
【发布时间】:2010-01-22 01:23:13
【问题描述】:

有没有办法确定 HTML 标签的内容何时发生了变化?我宁愿捕捉一个事件而不是轮询它。

我的用例是我在富文本编辑器中将文本包含在跨度标签中,并且当用户修改封闭文本时,我需要删除跨度标签。

【问题讨论】:

  • 我知道你不想投票(活动会很多更好),但有时你必须这样做。很多 AJAX 和 JavaScript 喜欢检查 window.location.hash 投票。
  • 变化如何?你在调用一些ajax吗?如果是这样,只需在该 ajax 上使用回调。
  • 当用户在富文本编辑器中编辑文本时它会改变

标签: javascript jquery html events rich-text-editor


【解决方案1】:

您是否使用典型的所见即所得编辑器之一,并且不想更新其代码以破坏可更新性?然后,也许您可​​以收听 WYSIWYG 编辑器发送的 onTextChange 事件(或类似事件),检查更改的内容,然后做出反应。

只是一个想法,因为您在问题中提供的信息太少了。

【讨论】:

  • 是的,这可能是最好的解决方案。很遗憾,我无法从 span 等结构标签中接收更多事件。
【解决方案2】:

我认为没有可用的事件(输入元素除外),但是您可以对其进行轮询。

$element = $('#my-element');

var originalHtml = $element.html();

var pollHtml = setInterval(function() {

    if (originalHtml !== $element.html()) {
        alert('HTML changed!'); 
        clearInterval(pollHtml);
    };

}, 100);

【讨论】:

  • 这样的跨度标签有数千个,所以轮询并不实用
【解决方案3】:

我无法添加评论,所以我将我的建议放在这里,

@贾斯汀·约翰逊

$("#close-question-2114317").change(function() {alert(1);}); 
$("#close-question-2114317").text( function(){
    $(this).trigger('change'); 
    return "Close!!!";
});

如果是这样的话,我相信我们可以调用触发器......

【讨论】:

    【解决方案4】:

    您必须使用 JavaScript 以某种方式修改 DOM。在大多数情况下,轮询是一个坏主意。我已经设置了一个演示 here,它可以让您很好地了解如何检查 HTML 的更改。只需在需要时调用该函数......即使它只是轮询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多