Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не срабатывает bind(и click) после load (или get) (https://javascript.ru/forum/jquery/2538-ne-srabatyvaet-bind-i-click-posle-load-ili-get.html)

dijah 12.01.2009 12:02

Не срабатывает bind(и click) после load (или get)
 
Есть таблица:
<table id="table-tasks"> 
<thead> 
<tr> 
    <th style="width:60px;">Время
    <th>Описание
    <th style='width:20px'>Удалить
</tr> 
<tr> 
    <th><a href="#" id="sort-asc-date">&uarr;</a> <a href="#" id="sort-desc-date">&darr;</a> 
    <th>
    <th>
</tr> 
</thead> 
<tbody id="table-tasks-rows"> 
		<tr id="56db2622b68eb24bb9e811c8819d6bf0"> 
			<td>02.12.2008 21:45:46
            <td>Описание 1
            <td><a name='56db2622b68eb24bb9e811c8819d6bf0' class='delete_task_btn' title='Удалить задачу'>×</a>
        </tr> 
		<tr id="56db2622b68eb24aa9e811c8819d6bf1"> 
			<td>03.12.2008 11:47:32
            <td>Описание 2
            <td><a name='56db2622b68eb24aa9e811c8819d6bf1' class='delete_task_btn' title='Удалить задачу'>×</a>
        </tr> 
</tbody> 
</table>


JS-код:
$(function(){
        $('#sort-asc-date').bind("click",function(){$.get("ajax.php", {a:"sort", p:"asc-date"},function(data){$('#table-tasks-rows').html(data);});});
	$('#sort-desc-date').bind("click",function(){$.get("ajax.php", {a:"sort", p:"desc-date"},function(data){$('#table-tasks-rows').html(data);});});
        
        $('.delete_task_btn').bind("click",function(){
			$('#'+this.name).animate({ opacity: 'hide' }, "slow");
			$.get('ajax.php?a=del&p='+this.name);
        });
	}
);

При нажатии на стрелки (в заголовке таблицы, id "sort-asc-date" и "sort-desc-date") записи сортируются по дате в нужном порядке, но после сортировки перестают работать кнопки удаления записей (класс "delete_task_btn"). Хотя при загрузке страницы они нормально работают.
П.С. Пробовал заменить функции на load и click — одна фигня, после запроса на сервер как-будто слетают event'ы для кнопок удаления.

dijah 12.01.2009 14:37

Подозреваю, это из-за того, что эти кнопки генерятся динамически и при обновлении слетают бинды на них. Кто-нибудь знает как с этим бороться?

Gennady 26.01.2009 17:48

Думаю, что решение здесь: http://javascript.ru/forum/jquery/26...ax-zapros.html

Друг 27.01.2009 20:05

на будущее
 
прими за правило не обновлять то, что не нужно обновлять и тогда не будет проблем - твой bind умирает когда ты меняешь контент у элемента. меняй только строки в таблице, а еще лучше передавай в json данные для строк и просто меняй их в таблице для каждой ячейки (это долго, лучше сначала получив данные собрать их в строки и заменить те строки что сейчас в таблице на новые)


Часовой пояс GMT +3, время: 11:50.