Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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 复制onclick事件_Jquery_Javascript Events - Fatal编程技术网

Jquery 复制onclick事件

Jquery 复制onclick事件,jquery,javascript-events,Jquery,Javascript Events,我有一个jQuery函数,它基本上使整个表行都可以单击,但是复制一个链接并复制行中每个子单元格中的链接。在我的项目中,一些链接可能有onclick javascript事件,因此我需要我的函数也能够复制这些事件,但我在这样做时遇到了麻烦 以下是我当前的功能: jQuery.fn.linker = function(selector) { $(this).each(function() { var from = $(selector, this); if (

我有一个jQuery函数,它基本上使整个表行都可以单击,但是复制一个链接并复制行中每个子单元格中的链接。在我的项目中,一些链接可能有onclick javascript事件,因此我需要我的函数也能够复制这些事件,但我在这样做时遇到了麻烦

以下是我当前的功能:

jQuery.fn.linker = function(selector) {
    $(this).each(function() {
        var from = $(selector, this);
        if (from.length > 0) {
            var href = from.attr('href');
            if (href) {
                var link = $('<a href="' + $(selector, this).attr('href') + '"></a>').css({
                    'text-decoration': 'none',
                    'display': 'block',
                    'padding': '0px',
                    'cursor': 'pointer',
                    'color': $(this).css('color')
                });

                $(this).children()
                //.css('padding', '0')
               .wrapInner(link);
            }
        }
    });
};
2) 这一个似乎执行正常,但点击复制的链接没有任何作用

link.attr('onclick',from.attr('onclick'));

事件处理程序在元素上继续存在。你不能使用

$('bla')。单击…或任何类似的实现方法

相反,您必须使用以下方法之一:

$('bla').live('click', function(){...});

live和delegate之间的区别在于,delegate可以很容易地存在于链中。作为反对生存的人。委托是一项新功能

对于使用clone()函数的单个元素,需要在clone中传入一个true参数以保留原始事件处理程序。这不是你的情况,但知道它是有用的

$('.bla').clone(true).appendTo('body or something');

事件处理程序在元素上继续存在。你不能使用

$('bla')。单击…或任何类似的实现方法

相反,您必须使用以下方法之一:

$('bla').live('click', function(){...});

live和delegate之间的区别在于,delegate可以很容易地存在于链中。作为反对生存的人。委托是一项新功能

对于使用clone()函数的单个元素,需要在clone中传入一个true参数以保留原始事件处理程序。这不是你的情况,但知道它是有用的

$('.bla').clone(true).appendTo('body or something');

从jQuery 1.4开始,您可以使用
.clone()
完成此操作

这指示它复制数据和事件(事件保存在
.data('events')
中)

您的链接创建可以如下所示:

            var link = from.clone(true).css({
                'text-decoration': 'none',
                'display': 'block',
                'padding': '0px',
                'cursor': 'pointer',
                'color': $(this).css('color')
            });

从jQuery 1.4开始,您可以使用
.clone()
完成此操作

这指示它复制数据和事件(事件保存在
.data('events')
中)

您的链接创建可以如下所示:

            var link = from.clone(true).css({
                'text-decoration': 'none',
                'display': 'block',
                'padding': '0px',
                'cursor': 'pointer',
                'color': $(this).css('color')
            });

您可以在复制后重新绑定事件。但是新的克隆要好得多。

您可以在复制后重新绑定事件。但新的克隆人要好得多