VTrim написав:muhasjo написав:я роблю так як сказав пан Реплейс
$('parent_selector').on('click', 'a',function(){
//тут зловляться кліки по всіх кнопках , і старих і нових,
}).
такий спосіб навіть кращий за
$('a').click(function(){})
оскільки в памяті створюється тільки один обробник замість декількох на кожен "а" елемент.
А всередині методу on в jq, ) немає циклу який так само все перебирає і створює обробники?
jQ десь там глибоко в ядрі десь так напевно і робить, хоча хто його зна.
Тут штука в тому що івенти ходять зсередини назовні, тобто коли відбувся клік скажімо по спану, то цей івент обовязково прийде до body (звичайно, якщо хтось в середині не обрубає його e.stopPropagation()).
а тут ситуація така що створюється тільки один хендлер на body.
Припустим є код :
$('body').on('click','a',function(){
console.log('a was clicked');
})
і уявім ситуацію що відбувся клік по span. Результат такий, в даному коді немає хендлерів обробки спана тому клік сміло дійде до body, але тут одне але , jQ зробить просту перевірку по селектору, і побачить, що span != a і відповідно не запустить нашу з ф-ію хендлер.