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, время: 22:56. |