1

我有一个包含以下两个 div 的页面:

<div id="searchResults">
</div>

<div class="postSearchOptions" style="display: none;">
</div>

当 AJAX 调用更新“searchResults”div 时,有什么方法可以让“postSearchOptions”div 出现?我不控制 AJAX 调用,我想检测“searchResults”div 中的任何变化。

我尝试编写以下 JQuery 代码,但后来意识到它需要 Jquery 1.4 而我只有 1.3:

$("#searchResults").live("change", function() {
    $(".postSearchOptions").css("display", "inline");
});

有没有办法使用标准 JavaScript 或 Jquery 1.3 捕捉 searchResults div 更改的事件?谢谢!

4

4 回答 4

1

如果使用 jQuery 进行 AJAX 调用,您可以调用处理全局ajaxComplete事件并在那里运行您的代码。

于 2010-04-14T14:44:44.200 回答
0

如果您以编程方式更改 innerHTML,我认为不会触发 onchange 事件。为什么不在收到这些更改时显示 Post Search 选项,即为什么不将其作为 ajax 成功方法的最后一行。

高温高压

于 2010-04-14T14:42:39.547 回答
0

您可以使用 setInterval 来观看它,但正如其他人所说,检测 ajax 回调中的变化会更好。这是插件“监视”节点的草图,就像您尝试使用实时一样:

jQuery.fn.watch = function() {
  this.each(function() {
    var original = $(this).html();
    setInterval(function() {
       var newHtml = $(this).html();
       if (newHtml != original) {
         $(this).trigger('change');
         original = newHtml;
       }

    }, 500);

  } );
}
于 2010-04-14T14:51:54.897 回答
-1

工作,做....

jQuery.fn.watch = function() {
      this.each(function() {
        var obj = $(this);
        var original = $(this).html();
        setInterval(function() {
           var newHtml = $(obj).html();
           if (newHtml != original) {   
            $(obj).trigger('change');
            original = newHtml;
           }

        }, 500);

       } );
}
于 2013-05-16T14:03:59.817 回答