2012-04-18 3 views
0

Я пытаюсь отправить какой-то ajax POST перед включением клика.

Я попытался это:

$('.unread a').click(function(){ 
    ele = $(this); 
    $.post('ajax/notification.php', { 
    info : ele.attr('title') 
    }, 
    function(data) { 
     if(data != 'frack') { 
      ele.addClass("read"); 
      ele.removeClass("unread"); 
      window.location = ele.attr("href"); 
     } 
    }); 
    return false; 
}); 

, но когда я нажимаю на ссылку, он переходит непосредственно на страницу, не имея времени, чтобы отправить $ .post.

Любые идеи?

+0

Просто понял, Y ou're уже выполняет 'return false ', который должен делать то же самое, что и вызов' preventDefault() '. Можете ли вы опубликовать HTML-код, с которым работает этот код? Возможно, ваш селектор ошибочен, поэтому обработчик событий на самом деле не связан. –

+0

Просто, чтобы убедиться. И у вас нет других ошибок JS на этой странице? –

+0

Произошла ошибка у ele.attr ("href"), которая должна была быть ele.parents ("li"). Attr ("href"). Я думаю, что теперь он работает: | –

ответ

1

Это должно предотвратить ссылку отправлять вам где-то

$('.unread a').click(function(e){ 
     e.preventDefault(); 

http://api.jquery.com/event.preventDefault/

+0

Я сделал ту же ошибку, но 'return false;' в коде должен делать то же самое, что 'preventDefault()'. –

1

это предотвращает связь делать это действие по умолчанию

preventDefault(); 

так

$('.unread a').click(function(e){ 
    e.preventDefault(); 
    ele = $(this); 
    $.post('ajax/notification.php', 
       { info : ele.attr('title') 
        }, 
     function(data) { 
     if(data != 'frack'){ 
       ele.addClass("read"); 
       ele.removeClass("unread"); 
       window.location = ele.attr("href"); 
      } 
     }); 
    return false; 
}); 
Смежные вопросы