2010-07-10 8 views
1

Ok, donc ... j'ai un bouton avec onclick.changer la valeur de onclick avec jquery

<input id='post-favorite' onclick='Post.Favorite(15,"set");' type='submit' value='Favorite'> 

mais je dois changer la valeur de onclick quand on clique dessus pour Post.Favorite(15,"unset"); il y a une façon de le faire? Parce que j'ai lu dans certains endroits qui sont inpossible, intead utiliser onclick utiliser jquery click event.

Mais le problème est ... si j'utilise un événement click comment envoyer les valeurs à l'événement ou les modifier en simulant le changement du onclick?

Le bouton est également généré par php. Si l'utilisateur a déjà favorisé l'image si affiche "unset" dans le onclick, et s'il n'est pas favorisé, affiche "set" pour ensuite quand l'utilisateur clique ou non sur l'image.

Répondre

2

Jetez un oeil à la méthode toggle

$(document).ready(function(){ 

    $('#post-favorite').toggle(
    function(){Post.Favorite(15,"set");}, 
    function(){Post.Favorite(15,"unset");} 
    ); 

} 

Mise à jour (après commentaires)

Utilisez cette fonction enveloppe

function wrapper(elem, id, initial) 
{ 
    var $elem = $(elem); 
    var set_state = $elem.data('set_state'); 
    if (set_state) // invert state 
     set_state = (set_state=='set')?'unset':'set'; 
    else // initialize state 
     set_state = initial; 

    Post.Favorite(id,set_state); 
    $elem.data('set_state', set_state); 
} 

et de l'utiliser comme

<input id='post-favorite' onclick='wrapper(this, 15,"set");' type='submit' value='Favorite'> 
+0

Explication mise à jour. Aussi l'id pourrait varier ... Je ne me suis pas hoy je peux obtenir l'id ... –

+0

avez-vous plusieurs de ces boutons dans votre page ou juste un? Aussi pourriez-vous ne pas comprendre est quelque chose est réglé/désactivé dans la fonction 'Post.Favorite' et basculer là-bas? –

+0

J'ai juste un bouton, et j'ai besoin de ce que deppending si l'image est réglée ou pas faire le contraire mais aussi besoin d'obtenir l'id d'image ... si je n'obtiens pas l'id je ne peux pas savoir quelle image ajouter aux favoris ou supprimer. –

1

Javascript

var PostFavorite = (function(_state) { 
    return function(id, state) { 
    _state = _state || state; 
    Post.Favorite(id, _state); 
    _state = (_state == "set") ? "unset" : "set"; 
    }; 
})(); 

HTML

<input onclick='PostFavorite(15,"set");' id='post-favorite' type='submit' value='Favorite'> 

Note: la seule chose que vous avez changé dans votre code HTML est que vous 've rem a reçu un point. Comment cool est-ce? :)

0

Si vous souhaitez supprimer le Javascript intégré, vous pouvez conserver les données dans un attribut spécial, puis vous fier à jQuery pour la gestion des événements de clic.

http://api.jquery.com/jQuery.data/

Maintenant, vous pouvez stocker la valeur de données avec l'élément, modifier et utiliser un simple gestionnaire d'événements clic pour automatiser.

-1

Une autre suggestion:

var click_action = 'Post.Favorite(15,"set");' 
$("#post-favorite").click(function() { eval(click_action); }); 

Vous pouvez mettre un autre code dans click_action varible, il sera exécuté sur une action de clic.

+1

non, juste non, pas une fois de plus. – redsquare