当元素附加到DOM时,是否可以添加某种事件/处理程序??
.click(),. change(),. keyup()等......
我需要在附加元素后立即获取元素的高度,然后将高度设置为另一个元素
答案 0 :(得分:61)
您可以覆盖默认的追加方法,并使其触发自定义追加事件。然后将处理程序绑定到该事件的元素:http://jsfiddle.net/H8ygx/
(function($) {
var origAppend = $.fn.append;
$.fn.append = function () {
return origAppend.apply(this, arguments).trigger("append");
};
})(jQuery);
$("div").bind("append", function() { alert('Hello, world!'); });
$("div").append("<span>");
答案 1 :(得分:11)
为此您可以使用“DOMSubtreeModified”事件。但它的兼容性有限。请参阅:http://www.quirksmode.org/dom/events/#t18
$('#myDiv').live("DOMSubtreeModified", function() {
alert('something changed inside #myDiv div');
});
此事件处理程序将适用于所有标准DOM修改方法:appendTo(),insertBefore(),insertAfter()等。
答案 2 :(得分:4)
接受的答案将触发您要追加的容器上的事件,这可能不是您想要的。这是一个将在您要追加的元素上触发事件的版本。请注意,这仍然无法正确处理append()的函数输入。
(function($)
{
var jqAppend = $.fn.append;
$.fn.append = function()
{
// Make a list of arguments that are jQuery objects
var appendages = $.makeArray(arguments).filter(function(arg)
{
return arg instanceof $;
});
// Call the actual function
var returnValue = jqAppend.apply(this, arguments);
// Trigger "append" event on all jQuery objects that were appended
for (var i = 0; i < appendages.length; ++i)
{
appendages[i].trigger('append');
}
return returnValue;
};
})(jQuery)
答案 3 :(得分:0)
根据 Scherbius.com 的建议,您可以使用 .on("DOMSubtreeModified")
,但我建议将其应用于父元素(如果您附加到它,您应该知道):
<div id="parent"></div>
<script>
$('<div id="child"></div>').appendTo("#parent");
//Heres what you asked about:
$("#parent).on("DOMSubtreeModified", function(){console.log("Do something!")})
</script>
答案 4 :(得分:-3)
一种方法是,如果你正在追求自己做一个像:
这样的功能function do_append(elem)
{
elem.append('......');
// get height of your element
// set height of another element
}
或者告诉我这种方法是否适合你:)