我搜索了一個解決方案,如:jQuery的 - 我該如何開始一個功能時DIV內容發生變化
if(content from $('#div') is change -> start function test();)
更改與$('#div').html('blub');
由於內容提前! 彼得
PS:我知道,這是可能的setTimeout的,但是這是一個非常骯髒的解決方案:/
我搜索了一個解決方案,如:jQuery的 - 我該如何開始一個功能時DIV內容發生變化
if(content from $('#div') is change -> start function test();)
更改與$('#div').html('blub');
由於內容提前! 彼得
PS:我知道,這是可能的setTimeout的,但是這是一個非常骯髒的解決方案:/
只是連鎖。測試()後的.html。
$('#div').html('blub').test();
要做到這一點,只需做一個小插件。
:
jQuery.fn.test = function() {
// Your test function goes here.
return this.each()};
即返回是需要的,因爲一個方法必須返回jQuery對象,除非明確地另有說明,否則用於jQuery插件。閱讀關於jQuery插件here。
請解釋反對票。 – 2010-08-17 06:50:33
只是出於好奇,如果你正在改變DIV的內容與您的代碼,不能你當你改變div時只需撥打test()
?
$().event(function(){
$('#div').html('blub');
test(); //call your test function
});
我想實現,最好的辦法是寫一個自定義的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
就是這樣!非常感謝你! – Peter 2010-08-16 12:42:40
'$(this)'或'this' not'$ this' – 2010-08-16 12:47:02
@peter,謝謝,編輯:) – IcanDivideBy0 2010-08-16 13:08:51
它可以做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);
});
};
不錯!我真的很喜歡你的#2解決方案。我從來沒有聽說過關於jQuery函數重寫:) – IcanDivideBy0 2010-08-16 12:42:01
看到這個http://www.bennadel.com/blog/1624-Ask-Ben-Overriding-Core-jQuery-Methods.htm。它需要一些測試,但在這種情況下它是可行的解決方案 – 2010-08-16 12:49:09
這將做的工作 $('#div').change(function(){ test(); });
你能不能當你做了'的.html()觸發它'打電話? – 2010-08-16 12:28:56
你能寫一點例子嗎? – Peter 2010-08-16 12:34:53
@Peter - 例如,當我執行'.html()'調用時,我的答案會觸發它。 – 2010-08-16 12:49:35