//deep linking
$.fn.ajaxAnim = function() {
$(this).animW();
$(this).html('<div class="load-prog">loading...</div>');
}
$("document").ready(function(){
contM = $('#main-content');
contS = $('#second-content');
$(contM).hide();
$(contM).addClass('hidden');
$(contS).hide();
$(contS).addClass('hidden');
function loadURL(URL) {
//console.log("loadURL: " + URL);
$.ajax({ url: URL,
beforeSend: function(){$(contM).ajaxAnim();},
type: "POST",
dataType: 'html',
data: {post_loader: 1},
success: function(data){
$(contM).html(data);
$('.post-content').initializeScroll();
}
});
}
// Event handlers
$.address.init(function(event) {
//console.log("init: " + $('[rel=address:' + event.value + ']').attr('href'));
}).change(function(event) {
evVal = event.value;
if(evVal == '/'){return false;}
else{
$.ajax({ url: $('[rel=address:' + evVal + ']').attr('href'),
beforeSend: function(){$(contM).ajaxAnim();},
type: "POST",
dataType: 'html',
data: {post_loader: 1},
success: function(data){
$(contM).html(data);
$('.post-content').initializeScroll();
}});
}
//console.log("change");
})
$('.update-main a, a.update-main').live('click', function(){
loadURL($(this).attr('href'));
return false;
});
$(".update-second a, a.update-second").live('click', function() {
var link = $(this);
$.ajax({ url: link.attr("href"),
beforeSend: function(){$(contS).ajaxAnim();},
type: "POST",
dataType: 'html',
data: {post_loader: 1},
success: function(data){
$(contS).html(data);
$('.post-content').initializeScroll();
}});
return false;
});
});
Я использую адреса jquery для обновления содержимого, сохраняя при этом полезный URL-адрес. При нажатии на ссылки в главном навигаторе URL-адрес обновляется правильно, но когда ссылки загружаются динамически с помощью ajax, функция адреса URL-адреса прерывается.Адреса jquery и метод live
Я сделал «щелчки» в прямом эфире, позволяя загружать контент через динамически загруженные ссылки, но я не могу заставить прослушиватель событий в реальном времени жить, но это, кажется, единственный способ сделать эту работу , Является ли мой синтаксис неправильно, если я изменить это:
$.address.change(function(event) {
к этому:
$.address.live('change', function(event) {
или же живой метод не работает с этим плагином?
Это is * not * как работает '.live()'. '.live()' прислушивается к событиям, чтобы пузыриться в DOM, когда событие достигает корня DOM, где работает обработчик событий .live() ', он проверяет, соответствует ли он селектору, с которым связано событие live , если он это делает, то он выполняется. Просто не важно, является ли элемент DOM новым или старым, просто он соответствует селектору. –
ok Я принимал в качестве предположения, что он знал, что live также работает для элементов, уже существующих в dom – fmsf