2012-04-19 11 views
5

Mam następującyobsługi zdarzeń Kopiowanie z jednego zestawu elementów do drugiego z wykorzystaniem jQuery

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

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

Jak skopiować obsługi zdarzeń (onClick, onDblClick..etc) z elementami w pierwszym secie do sąsiednie elementy w drugim zestawie ?? Jestem początkującym jquery i mającym trudny czas.

+0

Co rozumiesz przez "wydarzenia"? –

+0

onlcick, ondblclick ... itd. –

+0

Ah, OK. Masz na myśli _event handlers_. –

Odpowiedz

2

Należy użyć metody jquery's .data('events').

Udostępniłem działającą aplikację jsFiddle, aby dowiedzieć się, od czego zacząć.

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

wiem AlphaMale pokazał mi, ale mam jeszcze zamiar opublikować go okrywać to pomocne.

jest prawie identyczny w każdym razie ...

+0

Z jakiegoś powodu kod @AlphaMale nie działał. twoja była w porządku. Dodałem kod, który opublikowałeś w jsFiddle w odpowiedzi .. dzięki kolego. –

+0

+1 za skrzypce, Pozdrawiam ... :) – AlphaMale

2

Niektóre rzeczy jak to może pomóc:

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 

    }); 

    }); 

}); 

nadzieję, że to pomaga.

+0

Wznowienie dla smaku. – Ohgodwhy

+0

nie działa, nie widzę miejsca, w którym wiążę program obsługi z elementem "Sąsiadujący" ... –

+0

fixedHeader.bind (i, h.handler); Ta linia łączy wszystkie zdarzenia obsługi nagłówka z poprawionym nagłówkiem. prawda ?! – AlphaMale

0

Klon (true) funkcja w jQuery nie można skopiować obsługi zdarzeń, ale może tylko kopiować element.If chcesz go skopiować, chodzi o dodanie wiązanie zdarzenia. Możesz rzucić okiem na wiązanie zdarzeń JQUERY. Wywołaj funkcję wiązania w funkcji wywołania zwrotnego. to może pomóc.

+0

Czytałem od wielu godzin i nie mogłem ... cała sprawa jquery nie jest "wiążąca" dla mojego mózgu! –

5

Wiem, że odpowiedź na to pytanie już kilka razy, ale tutaj jest kompleksowe rozwiązanie oparte na wcześniejszych rozwiązaniach.

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); 
      }); 
     }); 
    }); 
} 
Powiązane problemy