Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #51 (permalink)  
Старый 11.07.2017, 23:30
Аспирант
Отправить личное сообщение для cadijob Посмотреть профиль Найти все сообщения от cadijob
 
Регистрация: 11.07.2017
Сообщений: 38

Сообщение от рони Посмотреть сообщение
смотрите код снова, пост №41
$(".canDisable").on("click", function(a) {
 if ($("#block-links").is(":visible")) {a.preventDefault(); a.stopPropagation();
 $(this).parent().css( "transform", "scale(0.85)" );

 }
})
Всё. Теперь всё идеально. Спасибо большое.
Ответить с цитированием
  #52 (permalink)  
Старый 12.07.2017, 04:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от cadijob
Почему?
Потому, что придется сесть за талмуд и учить, учить, учить. )
Ответить с цитированием
  #53 (permalink)  
Старый 12.07.2017, 16:49
Аспирант
Отправить личное сообщение для cadijob Посмотреть профиль Найти все сообщения от cadijob
 
Регистрация: 11.07.2017
Сообщений: 38

А из-за этого кода, якоря не перестанут работать? А то даже обычные, без jQ, не работают.
Ответить с цитированием
  #54 (permalink)  
Старый 12.07.2017, 17:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от cadijob
А из-за этого кода, якоря не перестанут работать?
a.preventDefault(); - отменяет действие по умолчанию, для ссылок, это переход по ним, так что если $(".canDisable"), это ссылки с адресами, то по ним перехода не будет. Остальные ссылки на странице этот код не затронет.

a.stopPropagation(); - останавливает всплытие события, то есть обработчики выше его не получат. Что у вас при этом на странице в данной ситуации, разбираться вам.
Ответить с цитированием
  #55 (permalink)  
Старый 12.07.2017, 17:19
Аспирант
Отправить личное сообщение для cadijob Посмотреть профиль Найти все сообщения от cadijob
 
Регистрация: 11.07.2017
Сообщений: 38

Точно. Убрал a.preventDefault(); и якоря без jQ заработали, а с ним нет.
Вот так смотрю offset :
var id  = $(this).attr('href');
            //узнаем высоту от начала страницы до блока на который ссылается якорь
            top = $(id).offset().top;
            console.log($(top));

И длина(lenght) всегда равна единице.
В чём может быть проблема?
В уроке -
$(document).ready(function(){
	$("#menu").on("click","a", function (event) {
		//отменяем стандартную обработку нажатия по ссылке
		event.preventDefault();

		//забираем идентификатор бока с атрибута href
		var id  = $(this).attr('href'),

		//узнаем высоту от начала страницы до блока на который ссылается якорь
			top = $(id).offset().top;
		
		//анимируем переход на расстояние - top за 1500 мс
		$('body,html').animate({scrollTop: top}, 1500);
	});
});

Но что с preventDefault();, что без, ничего не меняется.

Последний раз редактировалось cadijob, 12.07.2017 в 17:50.
Ответить с цитированием
  #56 (permalink)  
Старый 12.07.2017, 17:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от cadijob
В чём может быть проблема?
В глупости, которая в коде заложена - $(this).attr('href') вернет значение ссылки, строку, а какой у набора букв может быть offset().top? Или href возвращает корректное имя идентификатора объекта?
Ответить с цитированием
  #57 (permalink)  
Старый 12.07.2017, 17:57
Аспирант
Отправить личное сообщение для cadijob Посмотреть профиль Найти все сообщения от cadijob
 
Регистрация: 11.07.2017
Сообщений: 38

Сообщение от laimas Посмотреть сообщение
В глупости, которая в коде заложена - $(this).attr('href') вернет значение ссылки, строку, а какой у набора букв может быть offset().top? Или href возвращает корректное имя идентификатора объекта?
id в консоли принтит: #TalkAnchor, содержимое id
Ответить с цитированием
  #58 (permalink)  
Старый 12.07.2017, 18:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Если это ID, тогда Ок. А что за проблема то, чего lenght (проверка существования объекта), и что не меняется, прокрутка до его позиции?
Ответить с цитированием
  #59 (permalink)  
Старый 12.07.2017, 18:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

cadijob,
я просмотрел кратко 50 предыдущих серий этого сериала, в которых рони вам как бы уже объяснил все от и до. Включая и то, то если щелчок по ссылке, у которой в href будет не обязательно url, а хеш, то при отсутствии preventDefault() произойдет переход внутри страницы, то есть к блоку с ID указанному в href. Он разместится в максимально возможное положение вверху.

Вопрос - какое смещение при этом будет возвращать $(этот смещенный вверх объект).offset().top?

Если какие-то проблемы после применения preventDefault() (какие не понять), то кто вас заставляет использовать для этого тег А? Щелкать можно по чему угодно. Заменить такие ссылки (без uri) например на SPAN, используйте их. В чем проблема то?
Ответить с цитированием
  #60 (permalink)  
Старый 12.07.2017, 18:28
Аспирант
Отправить личное сообщение для cadijob Посмотреть профиль Найти все сообщения от cadijob
 
Регистрация: 11.07.2017
Сообщений: 38

Сообщение от laimas Посмотреть сообщение
Если это ID, тогда Ок. А что за проблема то, чего lenght (проверка существования объекта), и что не меняется, прокрутка до его позиции?
//узнаем высоту от начала страницы до блока на который ссылается якорь
top = $(id).offset().top;
console.log($(top)); = lenght: 1;(в массиве window)
как я понял по комментарием к коду, lenght(которая в переменной top) это расстояние до якоря?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS: работает на сервере, не работает из папки -majestic- Общие вопросы Javascript 2 02.08.2012 14:41
Не работает push! Динамическая вставка TSEH25 ExtJS 5 03.07.2012 13:00
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41
Safari + ajax некорректно работает, а в других работает demi AJAX и COMET 35 15.07.2009 14:11