5

我有以下

 var $header = $('.inner th');
 var $fixedHeader = $(".header1 th");

    $header.each(function (index) {
          // i need to copy all events from $header[index] to $fixedHeader[index]
    });

如何将事件处理程序(onClick、onDblClick..etc)从第一组中的元素复制到第二组中的相邻元素?我是 jquery 的新手并且很难过。

4

4 回答 4

5

我知道这已经回答过几次了,但这里有一个基于之前解决方案的全包解决方案。

function copyEvents(source, destination) {
    var events;

    //copying from one to one or more
    source = $(source).first();
    destination = $(destination);

    //get all the events from the source
    events = $(source).data('events');
    if (!events) return;

    //make copies of all events for each destination
    destination.each(function() {
        var t = $(this);
        $.each(events, function(index, event) {
            $.each(event, function(i, v) {
                t.bind(v.type, v.handler);
            });
        });
    });
}
于 2012-08-02T15:16:57.407 回答
2

像这样的事情可能会有所帮助:

var header = $('.inner th');
var fixedHeader = $(".header1 th");

header.each(function (index) {

    var events = $(header).data("events"); //Gives you all events of an element

    $.each(events, function(i, event) { //Loop through all the events

     $.each(event, function(j, h) { //Loop through all the handlers attached for a event

      fixedHeader.bind(i, h.handler); //Bind the handler with the event 

     });

    });

});

希望这可以帮助。

于 2012-04-19T05:41:14.787 回答
2

您需要使用 jquery 的.data('events')方法。

我提供了一个有效的 jsFiddle 来了解从哪里开始。

http://jsfiddle.net/hx8gf/2/

我知道 Alphamale 打败了我,但我仍然会发布它以防它有帮助。

反正几乎一模一样……

于 2012-04-19T05:51:00.020 回答
0

jquery中的clone(true)函数不能复制事件处理,只能复制元素。如果要复制,就要添加事件绑定。你可以看看 JQUERY 的事件绑定。在回调函数中调用绑定函数。这可能会有所帮助。

于 2012-04-19T05:51:30.387 回答