2013-08-23 5 views
0

Я не знаю, почему это не работает, и я все пробовал.Получение истории.js для работы без загруженных страниц Ajax

Большинство учебных руководств в Интернете используют Ajax, которого я не знаю, и я пробовал адаптировать его, но я не могу заставить работать. Я использую URL-адреса bang, и весь контент загружается на индексной странице, он просто отображается и скрывается динамически. Я мог бы использовать некоторую помощь, чтобы история работала.

Вот мой сценарий ...

History.Adapter.bind(window, 'statechange', handleStateChange); 
$('nav a').on('click',function(e) { 
    var target = $(this).attr('href'); 

    History.pushState(null, null, target); 
}); 

function handleStateChange() { 
    alert("State changed..."); 
} 

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

ответ

0

Просто определите функцию перед связыванием события, таким образом:

function handleStateChange() { 
    alert("State changed..."); 
} 
History.Adapter.bind(window, 'statechange', handleStateChange); 
$('nav a').on('click',function(e) { 
    var target = $(this).attr('href'); 

    History.pushState(null, null, target); 
}); 

Или намного лучше, так как я обычно делаю, определить функцию внутри привязки, если, конечно, вам не нужен используйте эту же функцию позже в скрипте.

History.Adapter.bind(window, 'statechange', function() { 
    alert("State changed..."); 
}); 

$('nav a').on('click',function(e) { 
    var target = $(this).attr('href'); 

    History.pushState(null, null, target); 
}); 
+0

Привет, МакК, у меня есть вопрос, похожий на него. Если я использую его на одной странице, например: a.html? State = 1 и a.html? State = 2, скрипт будет работать нормально. Однако я использую History.js на двух страницах, таких как: a.html и b.html. Таким образом, он не может работать. Пожалуйста, помогите мне в этом вопросе: http://stackoverflow.com/questions/19586033/how-to-use-history-js-to-capture-back-event –

1

я думаю, что «$ („нав а“)» опечатка в коде вы в курсе, он должен быть:

.... 
$('#nav a').on('click',function(e) { 
var target = $(this).attr('href'); 
.... 

В этом FIDDLE я предполагаю, что вы хотите использовать tag div с «nav» как атрибут id и некоторые ссылки внутри него Надеюсь, это поможет.

+0

_ [nav] (http: //www.w3 .org/wiki/HTML/Elements/nav) _ element - новый тег HTML5, на самом деле не опечатка в этом случае :) – MacK

+0

Я не знал об этом новом теге ... так что если вы относитесь к нему как к div, или 'p', или как любой другой тег, я предполагаю, что: $ ('nav'). find ('a') - правильный способ его кодирования ... – lollo

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

  • Нет связанных вопросов^_^