2013-07-28 144 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:很高兴它有帮助。快乐的编码 –

相关问题