Рассмотрим код javascript / jQuery:
jQuery("<input/>").attr("type", "button").attr("value", "Click me")
.click(function()
{
alert("hello");
})
.appendTo(".someDiv");
Это создает кнопку, привязывает к ней обработчик событий и добавляет ее ко всем элементам с классом "someDiv".
Это работает, как и ожидалось, ТОЛЬКО если в документе есть ТОЛЬКО ОДИН элемент с классом "someDiv". Если их больше, кнопки отображаются, но событие щелчка не срабатывает.
Я знаю, что могу использовать следующий обходной путь:
jQuery(".someDiv").each(function()
{
jQuery("<input/>").attr("type", "button").attr("value", "Click me")
.click(function()
{
alert("hello");
})
.appendTo(this);
});
Что работает, но, возможно, менее изящно.
Я думаю, это как-то связано с тем, что в первом примере создан только один элемент, и этот же элемент добавлен ко всем «someDiv», тогда как во втором примере фактически создано несколько элементов, но я не не понимаю, почему это означало бы, что обработчик событий не работает в первом примере.