DELEGATE в Jquery !
Привет всем!
Столкнулся как и многие с проблемой что событие не работает на новый элемент в подгружаемом аяксом контенте . В сети много устаревшего материала, в частности рекомендует использовать live() и т.п функции которые в новых версиях Jquery депрессированы :cray: Я откопал функцию Delegate и она чудесным образом работает, более того походу рекомендуется для новых версий Но вот почему то , таблицы через плагин tablesorter не хотяи подключатся. Раньше вызывал так: $(document).ready(function(){ $("#tableid").tablesorter(); }); На подгружаемый элемент, понятно, не работает (хотя ид тот же) Замечу таблица одна - я просто меняю ее . пробовал подгружать только TBODY, сделал обертку тег CONTENT задумка была такая , подгружать не всю таблицу , а только контент ее , а сама таблица по идее остается той же и событие должно продолжать работать ? ( так или нет - опровергните ) Но к сожалению, это не работает , т.е видимо из-за аж двух вложених внутри TABLE (tbody и content) jquery начинает глючить Короче говоря , надо как то заставить применятся таблесортеру на все последующие элементы Что то не могу придумать как прописать делегате , ибо в том примере идет через КЛИК , а тут нужно просто что бы ВСЕГДА была включено без всяких кликов и прочего... |
Щас проверил , даже вызов типа
$("body").delegate("#tableid td", "click", function() { $("#tableid").tablesorter(); }); Не работает. т.е первый раз работает, а после подгрузки - нет Странно, но такая же конструкция , для вызова подгрузки элементов работает... |
$("body").on("click", function(event){ $("#tableid").tablesorter(); }); Так работает Как вместо события КЛИК поставить событие типа "ВСЕГДА" |
Перепишите плагин под ваши нужды. Либо просто вызывайте функцию (.tablesorter), после изменения элемента.
|
$("body").on("click", "#tableid td", function() { $("#tableid").tablesorter(); }); |
Цитата:
Пробую $("body").on("change", function(event){ $("#tableid").tablesorter(); }); Типа изменение боди, т.е всего документа, но не работает |
Цитата:
|
Зачем хамить?
|
Часовой пояс GMT +3, время: 23:22. |