2013-07-28 147 views
2

我有div的一些信息,通過點擊按鈕填入.innerHTML。目標是我想要在.slideDown div中添加div中的文本。可以用jQuery來做到嗎?當div中的內部html發生變化時觸發事件

例子:

<div id="calcInfo"></div> 

添加文本到DIV -

document.getElementById("calcInfo").innerHTML = 'someText'; 

我希望它:)

if ($('#calcInfo').text().trim().length > 0) { 
    $('#calcInfo').slideDown('slow', function() {}); 
}; 

我試圖.change()功能後,使用此功能,但它僅適用於inputtextarea元素。非常感謝您的回答!

Ondrej

+0

如果檢查內容更改不起作用,您不能將此代碼綁定到按鈕的點擊功能嗎? – Dolchio

+0

不,因爲這個div包含關於網絡計算的信息,有時包含它,有時沒有。 – s0vet

+0

現在我正在使用'.setInterval()',但這不是很好的解決方案。 – s0vet

回答

10

您可以通過擴展$ .html函數來實現。就像這樣:

(function($) 
{ 
    var oldHtml = $.fn.html; 
    $.fn.html = function() 
    { 
     var ret = oldHtml.apply(this, arguments); 

     //trigger your event. 
     this.trigger("change"); 

     return ret; 
    }; 
})(jQuery); 

附加事件處理程序:

$("#calcInfo").on("change",function(){ 
    if ($(this).text().trim().length > 0) { 
     $(this).slideDown('slow', function() {}); 
    }; 
}); 

當你需要改變你的HTML。這樣做:

$("#calcInfo").html('someText'); 
+0

嘿,它超級酷:)我不知道更改jQuery函數。非常感謝你 ! ! ! – s0vet

+0

@ s0vet:很高興它有幫助。快樂的編碼 –

相關問題