2010-09-05 74 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;