2011-06-22 2 views
1

Можно создать дубликат:
Stop default hashtag behavior with jqueryКак остановить поведение кликов по умолчанию hashtag?

У меня есть JQuery код на ссылку, которая загружает DIV в страницу с помощью .load(), он также добавляет хэштегом к URL для разбиение на страницы/закладки; то, что я хочу сделать, это остановить переключение страницы на div при нажатии ссылки.

$('#jqNav li a').click(function(){ 

    if($(this).parent().is(".nav1")){ $('.landing .main .nav ul').css({ "background-position" : "0 -50px" });} 
    else if($(this).parent().is(".nav2")) { $('.landing .main .nav ul').css({ "background-position" : "0 -100px" });} 
    else if($(this).parent().is(".nav3")) { $('.landing .main .nav ul').css({ "background-position" : "0 -150px" });} 
    else if($(this).parent().is(".nav4")) { $('.landing .main .nav ul').css({ "background-position" : "0 -200px" });}; 


    stopAnim = true; 
    $page = $(this).attr('href'); 
    var $hashTag = $(this).attr('name'); 
    window.location = "#" + $hashTag; 
    loadData(); 
    e.preventdefault(); 
    return false; 

}); 
+0

@Michael Irigoyen я уже возвращать ложь в мой код, который был ответ на ваш link, он все еще проходит проблему, обратите внимание на e.preventdefault(); был добавлен. – Xavier

ответ

7

Попробуйте использовать использовать e.preventDefault(); по ссылке нажмите

Попробуйте использовать $(window).scrollTop(0);, чтобы предотвратить # от воздействия на страницу

+0

Это сделало именно то, что мне тоже нужно, спасибо Нилу! – Xavier

0

Вы можете использовать return false; в качестве последнего оператора в клик-обработчика. Это или использовать как event.preventDefault(), так и event.stopPropagation() (return false) равно их обоим вместе, что предотвращает поведение по умолчанию для этого элемента и, препятствуя тому, чтобы событие проходило через DOM).

Ссылки:

5

Вы можете использовать e.preventDefault() для этого

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

Или используйте:

return false; 

Что делает как preventDefault() и stopPropagation()

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

EDIT

Не думайте, что вы хотите, может быть сделано. Поскольку было бы плохой безопасностью, чтобы иметь возможность изменять URL-адрес страницы, не переходя к этому URL-адресу.

Вы можете, например, изменить URL-адрес банка, позволяющий пользователям думать, что ваша страница представляет банк.

Может быть, это работает, когда только добавить хэш, так что вы можете дать следующую попытку (не проверял, может очень хорошо работает):

window.location.hash = $hashTag; 
return false; 

EDIT2

Я знаю, что я просто сказал вам, что это не работает, однако я просто наткнулся на этот пост здесь на SO, который использует HTML5, чтобы делать то, что вы хотите:

Is there a way to change the browser's address bar without refreshing the page?

Опять не тестирование :)

+0

У моего кода уже есть значение по умолчанию, но, похоже, он в противном случае видит OP для кода; – Xavier

+0

@OP: См. Мой отредактированный ответ – PeeHaa

+0

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

Смежные вопросы