2010-09-05 2 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 идентификатор для работы с в вызове addFav АЯКС.

Итак, у меня это в нижней части моей страницы, и теперь, даже если я havnt нажал на # fav, он запускает его? Но оно не запустить себя, когда я не имею (ID)

Heres 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 должен быть уникальный идентификатор, это намного более быстрый селектор.


Или передать его в качестве аргумента данных для .bind(), например:

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

И в вашем доступе функции, что путь вместо того, чтобы в качестве параметра, например так:

function addFav(e){ 
    var id = e.data.id; 
Смежные вопросы