jQuery:用function制作一个collections按钮?

现在我做了这个:

class =“addFavorite”,是一个普通的灰色星。

然后我有另一个类=“AlreadyFavorite”,这是一个黄色的星。

我想创建一个函数,所以当你点击灰色星形时,它会发送一个ajax调用(?),然后在成功时它变成黄色(将类更改为AlreadyFavorite)。

我知道如何制作一个发送ajax调用的onclick函数,但是如何更改样式/将图像图标更改为黄色?

CSS:

 .addFavorit{ background: url('../images/addFavorit.png'); width: 48px; height: 48px; } .alreadyFavorit{ background: url('../images/addFavorit_hover.png'); width: 48px; height: 48px; } 

尽量不要在可能的情况下重复自己并避免不必要的元素:

HTML:

   

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); 

第一次调用addFav()指定的url时单击链接,成功处理后将调用成功定义的函数。 结果:

   

由于重新绑定,第二次单击将调用removeFav() 。 结果将是:

   

在那之后,如果您的服务器没有采取行动,这将是一个无限循环。

在ajax调用之后,只需将类更改为alreadyFavorite ? 还是有什么我想念的?

或者它是否已经alreadyFavorit (如在CSS中)

 $('div').removeClass('addFavorit').addClass('alreadyFavorit')