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

是以前的jQuery:绑定的onclick

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

我加(<?php echo $showUP["uID"]; ?>)因为我希望用户profile's ID与在addFav Ajax调用工作。

所以我有这在我的网页的底部,现在即使我havnt点击了#fav它运行它?但它不中的情况下运行本身时,我没有这个(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); 
     } 
    }); 
} 

回答

6

bind函数的第二个参数本身就是一个函数。当您将函数作为参数传递时,您只能提供函数名称,而不提供开始/结束括号或参数。

在你的情况,如果你想传递参数addFav功能,你可以通过传递一个匿名函数来bind这样做,而且该函数的身体内,拨打addFav像往常一样与你的参数。像这样:

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

你需要一个anoymous功能这样的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;