Buradaki sorun, "ON" un O ZAMAN var olan tüm öğelere uygulanmasıdır. Dinamik olarak bir öğe oluşturduğunuzda, tekrar çalıştırmanız gerekir:
$('form').on('submit',doFormStuff);
createNewForm();
// re-attach to all forms
$('form').off('submit').on('submit',doFormStuff);
Formların genellikle adları veya kimlikleri olduğundan, yeni forma da ekleyebilirsiniz. Çok fazla dinamik şey oluşturuyorsam, bir kurulum veya bağlama işlevi ekleyeceğim:
function bindItems(){
$('form').off('submit').on('submit',doFormStuff);
$('button').off('click').on('click',doButtonStuff);
}
Bu yüzden, ne zaman bir şey yaratsanız (benim durumumda düğmeler genellikle), sayfadaki her şeyi güncellemek için bindItems'i çağırırım.
createNewButton();
bindItems();
'Gövde' veya belge öğelerini kullanmayı sevmiyorum çünkü sekmeler ve kiplerle etrafta dolanma ve beklemediğiniz şeyler yapma eğilimindedirler. Tek sayfalık basit bir proje olmadığı sürece her zaman olabildiğince spesifik olmaya çalışırım.
$(document).on('submit','form.remember',function(){...})