Dynamicznie utworzyłem przyciski w div. I powiązanie kliknięcia i innych zdarzeń dla przycisków. Ale problem polega na tym, że zdarzenie kliknięcia uruchomiło tylko jeden przycisk pierwszego kliknięcia. Dzieje się tak samo w przypadku innych wiążących zdarzeń. Przykładowy kod to
$("#divButtons input[type=button]").each(function () {
$(this).bind("mouseover", function (e) {
// some work
}).bind("mouseout", function (e) {
// some work
}).bind("click", function (e) {
// some work
});
});
Działa dobrze, gdy jest włączony document.ready()
Ale w moim przypadku przyciski utworzone daleko po DOM gotowe.
Chcę też wiedzieć, dlaczego tak się zachowuje ...?
Odpowiedzi:
5 dla odpowiedzi № 1Jeśli używasz jQuery 1.7+, wybierz on () i naprawdę nie ma potrzeby korzystania z nich ():
$(document).on({
mouseover: function(e) {
// some work
},
mouseout: function(e) {
// some work
},
click: function(e) {
// some work
}
}, "#divButtons input[type=button]");
zamień dokument na najbliższy niedynamiczny element dla delegowanej procedury obsługi zdarzeń.