分组的Jquery事件onChange

时间:2010-04-14 14:33:46

标签: javascript jquery html onchange

我有一个包含以下两个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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

HTH

答案 2 :(得分:0)

您可以使用setInterval来观看它,但正如其他人所说,检测ajax回调中的更改会更好。这是一个草图插件看起来像什么“看”节点,就像你正在尝试使用live:

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);

  } );
}

答案 3 :(得分:-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);

       } );
}