Как использовать Live jquery?

Всем привет! После ajax запроса все элементы моего фильтра перезагружаются и второй раз клик перезагружает страницу, пишут можно сделать через live jquery как в этом примере сделать с помощью .live() ?

$(document).ready(function(){
		$('#filter #a_link').each(function(){
		  var link = $(this);
		  $(link).click(function(){
			window.location.href = window.location.href.replace(/#!.*/g, '') + '#!' + link.attr('href');
			$sort = link.attr('sort_id');
			$.get('/ajax/places?sort='+$sort, function(data) {
				$('#places_filters').html(data);
			});
			
			return false;
		  });  
		});
	});
  • Вопрос задан
  • 2887 просмотров
Решения вопроса 1
itspers
@itspers
Live давно deprecated. Надо юзать on

$('#places_filters').on('click', '#a_link', function(){
            var link = $(this);
            window.location.href = window.location.href.replace(/#!.*/g, '') + '#!' + link.attr('href');
            $sort = link.attr('sort_id');
            $.get('/ajax/places?sort='+$sort, function(data) {
                $('#places_filters').html(data);
            });
            
            return false;

})


Сие подразумевает, что '#places_filters' никогда не поменяется никакими аяксами. Jquery будет палить все клики по нему и, если кликнули внутри него на '#a_link' - выполнять третий аргумент.

А еще, почему это у вас $('#filter #a_link').each - не должно быть элементов с одинаковыми айдишниками на странице - тут нужно классы использовать...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ertaquo
@ertaquo
Вместо $('.some-selector').click(function(){}) используйте
$(document).on('click', '.some-selector', function(){});

$.live() - устаревший метод и боле не поддерживается.
Ответ написан
Комментировать
Кроме того, рекомендую помимо return false сделать e.preventDefault

$(document).on('click','a[href]',function(e){
if ( typeof e != 'undefined' && typeof e.preventDefault == 'function') {// Hi, IE!
	e.preventDefault();
}
/* some code */
return false;
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы