jquery:bind onclick

时间:2010-09-05 13:15:21

标签: jquery onclick bind

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

之前是

    $(document).ready(function() {    
    $('a#fav').bind('click', addFav);
});

我添加了(<?php echo $showUP["uID"]; ?>)因为我希望用户个人资料的ID可以在addFav ajax调用中使用。

所以我在我的页面底部有这个,现在即使我已经点击了#emp它运行了吗?但是当我没有(id)

时,它不会自行运行

以下是继承人addFav:

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

2 个答案:

答案 0 :(得分:6)

bind函数的第二个参数是函数本身。将函数作为参数传递时,只能提供函数名称,而不能提供左/右括号或参数。

在您的情况下,如果您想将参数传递给addFav函数,您可以通过将匿名函数传递给bind来实现,并且在该函数的主体内,调用{正如您通常使用参数一样{1}}。像这样:

addFav

答案 1 :(得分:4)

你需要一个像onload这样的令人生气的功能:

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

这种风格在success回调中:

$('#fav').click(function() {
  addFav(id);
});

因为#fav应该是一个唯一的ID,所以它是一个更快的选择器。


或者,将其作为数据参数传递给.bind(),如下所示:

$('a#fav').bind('click', { id: id }, addFav);

在你的函数中以那种方式访问​​它而不是像参数一样:

function addFav(e){
  var id = e.data.id;