Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在append()上做点什么_Jquery - Fatal编程技术网

Jquery 在append()上做点什么

Jquery 在append()上做点什么,jquery,Jquery,当元素被附加到DOM中时,是否可以添加某种类型的事件/处理程序 .click()、.change()、.keyup()等。类似 我需要在元素被追加后立即获取元素的高度,然后将高度设置为另一个元素一种方法是,如果您自己进行追加,则生成如下函数: function do_append(elem) { elem.append('......'); // get height of your element // set height of another element }

当元素被附加到DOM中时,是否可以添加某种类型的事件/处理程序

.click()、.change()、.keyup()等。类似


我需要在元素被追加后立即获取元素的高度,然后将高度设置为另一个元素

一种方法是,如果您自己进行追加,则生成如下函数:

function do_append(elem)
{
    elem.append('......');
    // get height of your element
    // set height of another element
}

或者,如果此方法不能为您剪切它,请告诉我:)

您可以覆盖默认的append方法并使其触发自定义append事件。然后将处理程序绑定到该事件的元素:

(函数($){
var origAppend=$.fn.append;
$.fn.append=函数(){
return origAppend.apply(这是参数).trigger(“append”);
};
})(jQuery);
$(“div”).bind(“append”,function(){alert('Hello,world!');});
$(“div”)。追加(“”);
为此,您可以使用“DOMSubtreeModified”事件。但它的兼容性有限。见:


此事件处理程序将与所有标准DOM修改方法一起使用:appendTo()、insertBefore()、insertAfter()等。

接受的答案将在您要附加到的容器上触发事件,这可能不是您想要的。下面是一个版本,它将触发要附加的元素上的事件。请注意,这仍然不能正确处理append()的函数输入

(函数($)
{
var jqAppend=$.fn.append;
$.fn.append=函数()
{
//列出属于jQuery对象的参数
var appendages=$.makeArray(参数).filter(函数(参数)
{
返回参数instanceof$;
});
//调用实际函数
var returnValue=jqAppend.apply(这是参数);
//在附加的所有jQuery对象上触发“append”事件
对于(变量i=0;i
您能显示您的附加代码吗?可能重复的附加代码不会。。我需要知道当一个元素被附加到DOMYeah中时,是否可以附加一个处理程序。对不起,我用了另一种想法:)真的从来没有想过重写apend…为什么这不只是Jquery的一部分?我错过了什么?因为在添加到jquery中时,包含这一点似乎是非常值得的。@kasdega我想它不包含在内,因为如果您使用其他方法(本机JS、其他库)附加元素,则不会触发事件!MDN说,“向文档中添加DOM变异侦听器会严重降低对该文档进行进一步DOM修改的性能(使其速度降低1.5-7倍!)。此外,删除侦听器并不能扭转这种损害。”
(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>");
$('#myDiv').live("DOMSubtreeModified", function() { 
    alert('something changed inside #myDiv div');
});
(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)