Я создаю простой фильтр списка, используя jQuery.У меня есть несколько категорий в div #filter
и некоторые элементы в div #itemlist
.При нажатии на элемент (гиперссылка) содержимое страницы загружается через .load в div #content
ниже.Когда категория выбрана, предметы, не входящие в эту категорию, приобретают класс notactive и выделяются серым цветом.
Теперь, неактивные элементы, выделенные серым цветом, должны быть недоступны для клика .
Я пробовал разные подходы, но ни один из них мне не помог.
removeAttr('href')
не работает, потому что функция .load все еще пытается извлечь содержимое - то же самое с
preventDefault
- Я пытался
.bind('click', false);
но на самом деле не знаю, где его разместить, так как все элементы активируются при загрузке страницы, но отключаются позже без перезагрузки страницы.
Вот мой код для фильтрации элементов:
$('#filter li a').click(function() {
// fetch the class of the clicked item
var ourClass = $(this).attr('class');
// reset the active class on all the buttons
$('#filter li').removeClass('current');
// update the active state on clicked button
$(this).parent().addClass('current');
if(ourClass == 'all') {
// show all items
$('#itemlist').children('li').removeClass('notactive');
}
else {
// hide all elements that don't share ourClass
$('#itemlist').children('li:not(.' + ourClass + ')').addClass('notactive');
// show all elements that do share ourClass
$('#itemlist').children('li.' + ourClass).removeClass('notactive');
}
return false;
});
И вот ajax-вызов, который также необходимо отключить / включить:
$.ajaxSetup({cache:false});
$("#itemlist a").click(function(){
var $itemlink = $(this).attr("href");
$("#content").html('<p><img src="ajax-loader.gif" /></p>');
$("#content").load(""+$itemlink+" #content > *");
return false;
});
Спасибо за любую помощь!