jQuery:它添加类,删除类本身?

标签 jquery

$(document).ready(function() {    
    $('a#fav').bind('click', function() {
        addFav(<?php echo $showUP["uID"]; ?>);
    });
});


function addFav(id){
    $.ajax({
      url: "misc/favAdd.php",
      data: { id: id},
      success: function(){
           $('a#fav')
                 .addClass('active')
                 .attr('title','[-] Remove as favorite')
                 .unbind('click')
                 .bind('click', removeFav(id))
           ;
                jGrowlTheme('wallPop', 'mono', '[+] Favorit', 'Du har nu lagt till denna profil som favorit', 'images/addFavorit_hover2.png', 1000);
      }
    });
}

function removeFav(id){
    $.ajax({
      url: "misc/favRemove.php",
      data: { id: id },
      success: function(){
            $('a#fav')
                 .removeClass('active')
                 .attr('title','[+] Add as favorite')
                 .unbind('click')
                 .bind('click', addFav(id))
            ;
                            jGrowlTheme('wallPop', 'mono', '[-] Favorit', 'Du har nu tagit bort denna profil som favorit', 'images/addFavorit_hover2.png', 1000);
      }
    });
}

我有这个问题,当我点击a#fav然后它addClass处于事件状态,然后删除它并添加和删除并发送一堆ajax本身..它变得疯狂。 我不希望这样,我想要它,所以当您单击 a#fav 时,它会添加类(发送 ajax 调用),然后当您再次单击它时,它会发送 ajax 调用并删除该类。就这样继续下去..

我做错了什么?

最佳答案

通过编写.bind('click',removeFav(id)),您将立即调用removeFav并将其返回值传递给bind 函数。

相反,您需要传递一个调用removeFav的函数,如下所示:

             .bind('click', function() { removeFav(id); })

(稍后的 addFav 也类似)

关于jQuery:它添加类,删除类本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3646502/

相关文章:

jquery - 将父元素滚动到子元素的顶部

javascript - 自动完成 jQueryUI 出现在 IE 中可见屏幕的下边缘下方

jquery - 在 jquery ui datepicker 中显示其他月份

javascript - JQuery FadeIn 和 CSS 幻灯片是断断续续的

jquery - 使用 .each() 将 .click() 分配给多个类

jQuery DatePicker minDate 无法在 Internet Explorer 和 Safari 中工作

javascript - jquery 从下拉菜单更改边框样式

javascript - 使用 JQuery 进行内联页面编辑(就地编辑)时如何维护安全性

jquery - 滚动多个像素时将位置更改为固定 (jQuery)

javascript - 是否有任何 javascript 库可以帮助我创建此表格布局以供查看、编辑、删除和新建