2013-12-05 4 views
0

Я хочу использовать встроенную загрузку (через AJAX) на своем веб-сайте и в то же время сохранять (некоторые) функции для людей без доступа к Javascript (если они все еще существуют).jQuery block a href

Мое меню'S:

<?php 
echo "<h3 id='title'></h3>"; 
if (empty($_SESSION['uid'])) { 
    echo "<a href='index'>Home</a> <br> "; 
    echo "<a href='register'>Register</a> <br> "; 
    echo "<a href='login'>Log In</a> <br> "; 
    echo "<a href='browser'>Browse MarketPlace</a> <br> "; 
    echo "<a href='support'>Support us!</a>"; 
} 
elseif (!empty($_SESSION['uid'])) { 
    echo "<a href='index'>Home</a> <br> "; 
    echo "<a href='overview'>Account Overview</a> <br> "; 
    echo "<a href='browser'>Browse MarketPlace</a> <br> "; 
    echo "<a href='sell'>Sell Items</a> <br> "; 
    echo "<a href='logout'>Logout</a> <br> "; 
    echo "<a href='support'>Support us!</a>"; 
} 
?> 

Мои Javascript:

$(document).ready(function() { 
    $(document).on("click", "a", function(event) { 
     var dataUrl = $(this).attr("href"); 
     if (dataUrl != "") { 
      loadPage(dataUrl); 
     } 
     return false; 
    }); 
}); 

Является ли это правильный способ сделать это? Меня особенно беспокоит необходимость блокировать оригинальный вызов a href, собственный браузер.

Он отлично работал, когда я использовал что-то обычное, как <a data-url='index'>. Затем я попробовал новую версию и не работал так, как ожидалось, без return false;, но теперь это так, поэтому я не слишком уверен в этом.

+1

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

+2

использование 'event.preventDefault()' –

ответ

7

использование event.preventDefault();

Если вызывается этот метод, действие по умолчанию события не будет срабатывать.

$(document).ready(function() { 
     $(document).on("click", "a", function(event) { 
      event.preventDefault(); 
      var dataUrl = $(this).attr("href"); 
      if (dataUrl != "") { 
       loadPage(dataUrl); 
      } 

     }); 
    }); 
+0

Вам не нужно 'вернуть false' на последней строке. – dcodesmith

+0

@dcodesmith согласился, я просто упомянул event.preventDefault(), не волнуйтесь, я обновлю его –

+0

. Должен ли я беспокоиться о событии propegation? – skiwi

0

Попробуйте использовать

event.preventDefault()

Это отменяет событие, если это отменяемый, не останавливая дальнейшее распространение события.

См event.preventDefault()