2013-01-18 20 views
5

Ok tu jsfiddle przykładJquery na razie nie jest wiążąca dla nieistniejących elementów

http://jsfiddle.net/HTjCT/1/

Jak widać cię po najechaniu nie jest wypalanie mouseover zdarzenia

jak mogę rozwiązać ten problem problem?

używam Jquery 1,9

<div id='superdiv'>Click Me</div> 


$(function() { 
    $('#superdiv').on('click', function (event) { 
     $('body').append('<div id="super">another'); 
    }); 
    $('#super').on('mouseover', function (event) { 
     alert('not working'); 
    }); 
}); 

javascript

Odpowiedz

9

Trzeba użyć „delegata”, tak (aby dostarczyć „na żywo”) $('body').on('mouseover', '#super', function (event) {

+0

dzięki pracy :) – MonsterMMORPG

+8

Chociaż jest to poprawne, proszę nie rozpocząć mocowania wszystkich do obsługi zdarzeń ciało. Delegowanie zdarzeń działa poprzez przechwytywanie * każdego * zdarzenia, które pęcznieje, a następnie sprawdza element źródłowy, aby sprawdzić, czy pasuje do elementu zainteresowania ('# super' tutaj). Tak więc za każdym razem, gdy najedziesz myszką ** cokolwiek ** na stronę, na którą trafisz, sprawdź, czy pasuje do tego elementu. Ułóż swoich delegatów tak lokalnych, jak to tylko możliwe do źródła, a uzyskasz lepszą wydajność, zamiast trzymać się ciała za każdym razem. – WickyNilliams

+0

To jest absolutna prawda, to właśnie na tym przykładzie pokazano delegata. –

-1

Div chcesz utworzyć onclick, nie jest zamknięta z '</div>' tag.

Co jeśli spróbujesz następujący kod:

$(function() { 
    $('#superdiv').on('click', function (event) { 
     $('body').append(
      $('<div/>',{ 'id' : 'super', 'text' : 'tetet'}).mouseover(function(event) { 
        alert('test'); 
      }) 
     ); 
    }); 
}); 
+0

wy ale nadal nie czyni różnicy :) http://jsfiddle.net/HTjCT/5/ – MonsterMMORPG

0

Można też owinąć myszy nad zdarzenie w funkcji i wywołaj ją za każdym razem, gdy dodasz nowe elementy, na które chcesz wpłynąć. W ten sposób wskazany przez WickyNilliams problem nie wpłynie na ciebie.

$(function() { 
    $('#superdiv').on('click', function (event) { 
     $('body').append('<div id="super">another'); 
     mouse(); 
    }); 
    function mouse() { 
     $('#super').on('mouseover', function (event) { 
      alert('not working'); 
     }); 
    }); 
    mouse(); 
} 
Powiązane problemy