2010-08-16 21 views
3

我搜索了一個解決方案,如:jQuery的 - 我該如何開始一個功能時DIV內容發生變化

if(content from $('#div') is change -> start function test();) 

更改與$('#div').html('blub');

由於內容提前! 彼得

PS:我知道,這是可能的setTimeout的,但是這是一個非常骯髒的解決方案:/

+2

你能不能當你做了'的.html()觸發它'打電話? – 2010-08-16 12:28:56

+0

你能寫一點例子嗎? – Peter 2010-08-16 12:34:53

+0

@Peter - 例如,當我執行'.html()'調用時,我的答案會觸發它。 – 2010-08-16 12:49:35

回答

0

只是連鎖。測試()後的.html。

$('#div').html('blub').test(); 

要做到這一點,只需做一個小插件。

​​:

jQuery.fn.test = function() { 
    // Your test function goes here. 
    return this.each()}; 

即返回是需要的,因爲一個方法必須返回jQuery對象,除非明確地另有說明,否則用於jQuery插件。閱讀關於jQuery插件here

+0

請解釋反對票。 – 2010-08-17 06:50:33

-1

只是出於好奇,如果你正在改變DIV的內容與您的代碼,不能你當你改變div時只需撥打test()

$().event(function(){ 
    $('#div').html('blub'); 
    test(); //call your test function 
}); 
2

我想實現,最好的辦法是寫一個自定義的HTML功能,像這樣:

function changeHtml(content) { 
    this.html(content); 
    yourChangeHandler(this); 
} 

編輯:或改變事件...... http://forum.jquery.com/topic/what-is-the-best-way-to-handle-onchange-event-on-a-div

+0

就是這樣!非常感謝你! – Peter 2010-08-16 12:42:40

+0

'$(this)'或'this' not'$ this' – 2010-08-16 12:47:02

+1

@peter,謝謝,編輯:) – IcanDivideBy0 2010-08-16 13:08:51

0

它可以做2種方式 1)創建新的jquery方法並在調用jquery hml函數之前調用你的測試函數。因此,不要使用$('#div')。html('blub'),您將編寫$ .myhtml($(「#div」)。html())。下面碼可能會給你一些想法(得到它的工作)

**jQuery.extend(jQuery, { myhtml: function (arg1, html) { 
     test(); 
     return arg1.html(html); 
} });** 
call by $.myhtml($("#div"), $("#div").html()) or $.myhtml($("#div")) 

2)覆蓋jQuery文檔功能http://www.bennadel.com/blog/1624-Ask-Ben-Overriding-Core-jQuery-Methods.htm

var refhtml = $.fn.html; 

$.fn.html = function() { 
    $(this).each(function() { 
     test(); 
     refhtml .apply(this, arguments); 
    }); 
}; 
+0

不錯!我真的很喜歡你的#2解決方案。我從來沒有聽說過關於jQuery函數重寫:) – IcanDivideBy0 2010-08-16 12:42:01

+0

看到這個http://www.bennadel.com/blog/1624-Ask-Ben-Overriding-Core-jQuery-Methods.htm。它需要一些測試,但在這種情況下它是可行的解決方案 – 2010-08-16 12:49:09

-1

這將做的工作 $('#div').change(function(){ test(); });

相關問題