2010-04-14 63 views
1

我有以下兩個div的頁面:jQuery的事件的onChange的股利

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

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

有什麼辦法,我可以使「postSearchOptions」 DIV出現當「SearchResult所」分區由AJAX更新呼叫?我不控制AJAX調用,我想檢測「searchResults」div中的任何更改。

我試着寫了下面的jQuery代碼,但後來意識到它需要Jquery的1.4和我只有1.3:

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

有沒有辦法趕上SearchResult所的情況下使用標準的JavaScript DIV改變或JQuery 1.3?謝謝!

+0

你能升級到jQuery 1.4嗎? – SLaks 2010-04-14 14:39:58

+0

@SLaks 1.4中的內容會在DOM更新時執行類似於事件的事件?我唯一知道的就是LiveQuery。 – Pointy 2010-04-14 14:43:26

+0

@Pointy:Nothing;我誤解了這個問題。不過,他應該升級到1.4;它更快。 – SLaks 2010-04-14 14:48:38

回答

0

我不認爲onchange事件會觸發,如果你編程改變innerHTML。爲什麼不在接收到這些更改後顯示Post Search選項,即爲什麼不將它作爲ajax成功方法的最後一行?

HTH

+0

好吧,AJAX方法在整個網站上共享,並在DOJO 0.4中編寫,所以我希望避免改變它們。我會窺視他們,看看是否有簡單的方法在AJAX調用中實現這一點。不過,如果可能的話,我更喜歡jQuery解決方案。 – David 2010-04-14 14:45:53

1

如果AJAX調用使用jQuery做,你可以調用處理全球ajaxComplete事件,並有運行代碼。

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

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

     }); 
}