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