Помещение функции href click в оператор if-else - PullRequest
0 голосов
/ 16 ноября 2010

У меня есть эта функция

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

, который я хочу превратить в оператор if ... else.

Как настроить таргетинг ссылок внутри div # header_playlist_categories и применить оператор else, если ссылки указывают на что-то отличное от '/ category / movies /'?

Ответы [ 3 ]

1 голос
/ 16 ноября 2010

Я думаю, что вы хотите сделать, чтобы обрабатывать все клики на a элементов в div#header_playlist_categories.Затем вы хотите сделать одну вещь, если атрибут href ссылки содержит /category/movies/, и другую, если это не так.Если это так, вы можете сделать это красиво, используя 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 голосов
/ 16 ноября 2010

Вы должны делегировать это событие вашему div#header_playlist_categories.

Внутри функции обратного вызова перейдите к атрибуту "href" ссылки, по которой щелкнули, и разветвьте ваш обработчик на основе его значения.

0 голосов
/ 16 ноября 2010

Вы можете использовать :not() таким образом, чтобы получить другие ссылки:

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

Или чуть дешевле, проверьте в цикле:

$("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
   });
 }
});
...