2010-11-16 6 views
0

J'ai cette fonctionMettre une fonction de clic href dans un if-else

$("a[href*=/category/movies/]").click(function() { 
so.addVariable('stretching','fill'); 
so.write('mediaspace'); 
}); 

que je veux transformer en instruction if ... else.

Comment puis-je cibler des liens à l'intérieur de div # header_playlist_categories et appliquer une instruction else, si les liens pointent vers autre que '/ categories/movies /'?

Répondre

1

Je pense que ce que vous voulez faire est pour gérer tous les clics sur a éléments au sein de div#header_playlist_categories. Vous voulez ensuite faire une chose si l'attribut href du lien contient /category/movies/ et un autre s'il ne l'est pas. Si oui, vous pouvez le faire en utilisant bien delegate():

$('#header_playlist_categories').delegate('a', 'click', function(e) { 
    e.preventDefault(); // I imagine you always want to disable the default action 

    if (this.href.indexOf('/category/movies/') !== -1) { 
     so.addVariable('stretching','fill'); 
     so.write('mediaspace'); 
    } else { 
     // do whatever else you want to do 
    } 
}); 
+0

Merci pour l'info. Je vais probablement utiliser cette fois une autre fois! – PHearst

0

Vous pouvez utiliser :not() comme celui-ci pour obtenir les autres liens:

$("#header_playlist_categories a:not([href*=/category/movies/])").click(function() { 
    //something else 
}); 

Ou un peu moins cher, vérifiez dans la boucle:

$("a").each(function() { 
if(this.href.indexOf("/category/movies/") !== -1) { 
    $(this).click(function() { 
    so.addVariable('stretching','fill'); 
    so.write('mediaspace'); 
    }); 
} else { 
    $(this).click(function() { 
    //something else 
    }); 
} 
}); 
+0

Merci, la version la moins chère a fonctionné pour moi – PHearst

0

Vous devez delegate that event à votre div#header_playlist_categories.

Dans votre fonction de rappel, accédez à l'attribut "href" du lien sur lequel vous avez cliqué et branchez votre gestionnaire en fonction de sa valeur.

Questions connexes