Если честно, метод address
не слишком много делает для вас. На самом деле, плагин не добавляет поддержку автоматически.
Однако сделать это довольно просто. Вам просто нужно настроить обработчик для метода change
:
$.address.change(function(e){
// The function receives a single eventobject parameter that contains the
// following properties:
// value, path, pathNames, parameterNames,
// parameters, queryString
/* Do something based on e */
});
Когда адрес меняется, ваша функция срабатывает. Существуют также другие события internalChange
и externalChange
, которые можно настроить на срабатывание при изменении адреса внутри или снаружи.
Редактировать : Просто расширить на выше:
Это полный пример того, как это работает. Другими словами, вам не нужно вызывать что-либо еще в плагине, чтобы он работал:
// Override the click events of links
$("a").click(function(e) {
e.preventDefault();
$.address.path(this.id);
});
// Method called with the address changes
$.address.change(function(e) {
// This is called when the
$("#content").html("Something based on " + e.value);
});
Когда ссылки нажимаются, он устанавливает путь адреса (в терминах плагина) к идентификатору ссылки. Это генерирует действие, так что назад / вперед работает правильно. Сама ссылка не изменится, поэтому, если JavaScript не включен, он перейдет на любой адрес ссылки.
Бит $.address.change
устанавливает обработчик. Здесь вы можете загрузить контент. В моем примере он использует e.value
, чтобы получить значение адресного пути. Так что это будет что-то вроде /link1
, /link2
и т. Д. Этот обработчик вызывается, когда ссылка изменяется внутренне (с помощью плагина) или извне (с помощью браузера вперед / назад).
Примечание : я заметил, что это не работает безупречно с jQuery 1.5.1. Я почти уверен, что это как-то связано с изменением селектора атрибутов jQuery 1.5 (который, похоже, использует плагин адреса). JQuery 1.4 работает нормально, хотя.