Заменил библиотеку, перестал работать скрипт

O2
На сайте с 10.10.2011
Offline
36
1069

Здравствуйте. Делаю на сайте загрузки контента без перезагрузки, есть скрипт с подключенной библиотекой:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>


<script>
$(document).ready(function() {
$('a').live("click", function() {
var url = $(this).attr('href');
$.ajax({
url: url + '?ajax=true',
success: function(data){
$('#content').html(data);
}
});
if(url != window.location){
window.history.pushState(null, null, url);
}
return false;
});
$(window).bind('popstate', function() {
$.ajax({
url: location.pathname + '?ajax=true',
success: function(data) {
$('#content').html(data);
}
});
});
});
</script>

все работает, но вот как подключаю библиотеку 2.1.1, он перестает работать, а нужна именно 2.1.1 библиотека. Может кто подскажет, что не так?

Подключаю эту библиотеку

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
vandamme
На сайте с 30.11.2008
Offline
675
#1

В новой версии старый функционал может быть усовершенствован/удален.

BG
На сайте с 03.10.2010
Offline
195
#2

В консоли ошибки есть?

---------- Добавлено 08.08.2015 в 15:17 ----------

У вас в 2 строке вызов .live() судя по http://api.jquery.com/live/ от этого метода отказались в версии 1.9. Ну и в доке вот что советуют:

As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate() in preference to .live().



---------- Добавлено 08.08.2015 в 15:19 ----------

Так же попробуйте заменить $ на jQuery везде в скрипте

-= Сайты на заказ | Правки, обновление, работы по DLE =- ( /ru/forum/791118 ) Telegram: @ruslansh ( tg://resolve?domain=ruslansh )
O2
На сайте с 10.10.2011
Offline
36
#3
BrightGuy:
В консоли ошибки есть?

---------- Добавлено 08.08.2015 в 15:17 ----------


У вас в 2 строке вызов .live() судя по http://api.jquery.com/live/ от этого метода отказались в версии 1.9. Ну и в доке вот что советуют:



---------- Добавлено 08.08.2015 в 15:19 ----------

Так же попробуйте заменить $ на jQuery везде в скрипте

Да в консоли ошибки появились, заменил на live на delegate и вот что получил в консоли если интересно:

Uncaught TypeError: (b || "").match is not a function 

n.event.add @ jquery.min.js:3
(anonymous function) @ jquery.min.js:3
n.extend.each @ jquery.min.js:2
n.fn.n.each @ jquery.min.js:2
n.fn.extend.on @ jquery.min.js:3
n.fn.extend.delegate @ jquery.min.js:4
(anonymous function) @ contacts.php:20
n.Callbacks.j @ jquery.min.js:2
n.Callbacks.k.fireWith @ jquery.min.js:2
n.extend.ready @ jquery.min.js:2
I @ jquery.min.js:2

Но в принципе у меня все заработало, заменил live на click. Но где-то на днях прочитал, что

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

Спасибо, подтолкнул в правильном направление :)

ДП
На сайте с 23.11.2009
Offline
203
#4

В общем и целом отличие live от click в том, что live будет работать и на элементах, которые были на странице в момент его вызова и на тех, что будут вставлены в DOM после его вызова.

Чтобы сохранить подобную функциональность вам по идее надо заменить live на

.on("document","a",function(){}); иначе у вас могут перестать работать клики на ссылках в подгруженном контенте.

O2
На сайте с 10.10.2011
Offline
36
#5
Дикий пионер:
В общем и целом отличие live от click в том, что live будет работать и на элементах, которые были на странице в момент его вызова и на тех, что будут вставлены в DOM после его вызова.
Чтобы сохранить подобную функциональность вам по идее надо заменить live на
.on("document","a",function(){}); иначе у вас могут перестать работать клики на ссылках в подгруженном контенте.

Теперь понятно, заменил на .on(), спасибо.

c12o16h1
На сайте с 01.09.2009
Offline
77
#6

Замените:

$('a').live("click", function()

на

$('a').on("click", function()

Моментальный вывод Webmoney в Украине (http://obmennik.ws/?r=id.4780)
O2
На сайте с 10.10.2011
Offline
36
#7
c12o16h1:
Замените:
$('a').live("click", function()
на
$('a').on("click", function()

Так и сделал =)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий