Старайтесь не повторять себя там, где это возможно, и избегайте ненужных элементов:
HTML:
<a href="#" id="fav" title="[+] Add as favorite"> </a>
CSS:
a#fav{
background: url('../images/addFavorit.png');
display: block;
width: 48px;
height: 48px;
}
a#fav.active{
background: url('../images/addFavorit_hover.png');
}
JAVASCRIPT
function addFav(){
$.ajax({
url: "/favorites/add",
data: {"id": articleID},
success: function(){
$('a#fav')
.addClass('active')
.attr('title','[-] Remove from favorites')
.unbind('click')
.bind('click', removeFav)
;
}
});
}
function removeFav(){
$.ajax({
url: "/favorites/remove",
data: {"id": articleID},
success: function(){
$('a#fav')
.removeClass('active')
.attr('title','[+] Add as favorite')
.unbind('click')
.bind('click', addFav)
;
}
});
}
//this will make the link listen to function addFav (you might know this already)
$('a#fav').bind('click', addFav);
При нажатии на ссылку при первом вызове URL-адреса, указанного в addFav()
, и после успешной обработки будет вызвана функция, определенная успешно.Результат:
<a href="#" id="fav" class="active" title="[-] Remove as favorite"> </a>
Второй щелчок вызовет removeFav()
из-за повторной привязки.Результат будет:
<a href="#" id="fav" class="" title="[+] Add as favorite"> </a>
После этого это бесконечный цикл, если ваш сервер не работает.