Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 26.08.2013, 19:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

cOAPerator,
это $('a[href^="#"]') выборка ссылок начинающихся на # ----на такую http://sait.ru/category/statia.htnl#pod-razdel1 он не среагирует -- лучше конечно видет код над которым вы мучаитесь
^ начало
* содержит



$('a[href*="#"]').click(function(){
	// добавляем обрезку
    var target = $(this).attr('href').replace(/^[^#]+/,'');
	$('html, body').animate({scrollTop: target ==  '#top' ? 0 :$(target).offset().top}, 800);
	return false;
});
Ответить с цитированием
  #12 (permalink)  
Старый 26.08.2013, 20:19
Аспирант
Отправить личное сообщение для cOAPerator Посмотреть профиль Найти все сообщения от cOAPerator
 
Регистрация: 04.01.2012
Сообщений: 78

рони, над вот этим кодом и мучаюсь )
вот это было
$(function(){
	$("#back-top").hide();
	$(function () {
		$(window).scroll(function () {
			if ($(this).scrollTop() > 150) {
				$('#back-top').fadeIn();
			} else {
				$('#back-top').fadeOut();
			}
		});
		$('#back-top a').click(function () {
			$('body,html').animate({scrollTop: 0}, 800);
				return false;
		});
	});
});

вот это стало
$(function(){
	$("#back-top").hide();
	$(window).scroll(function () {
		if ($(this).scrollTop() > 150) {
			$('#back-top').fadeIn();
		} else {
			$('#back-top').fadeOut();
		}
	});
	$('a[href*="#"]').click(function(){
		// добавляем обрезку
		var target = $(this).attr('href').replace(/^[^#]+/,'');
		$('html, body').animate({scrollTop: target ==  '#top' ? 0 :$(target).offset().top}, 800);
		return false;
	});
});

но ссылки другие не работают почему то (кроме кнопки наверх, она работает), а в тестовом скрипте работают, хотя в тестовом скрипте и в рабочем они одинаковые.
я похоже догадываюсь в чем проблема, в тестовом скрипте якоря <a id="center">center</a>
а у меня в рабочем скрипте <a name="center">center</a> как положено по спецификации
потому и не работают ссылки простые.
как изменить скрипт чтобы с нормальными якорями работал скрипт?
использовать id нет возможности, так как якоря делаются редактором

Последний раз редактировалось cOAPerator, 26.08.2013 в 20:44.
Ответить с цитированием
  #13 (permalink)  
Старый 26.08.2013, 20:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

cOAPerator,
про спецификации ...
В XHTML и HTML5 вместо name для определения якоря требуется указывать атрибут id.

а селектор изменить не судьба ?
$('a[href*="#"]').click(function(){
	// добавляем обрезку
    var target = $(this).attr('href').replace(/^[^#]+#/,'');
	$('html, body').animate({scrollTop: target ==  'top' ? 0 :$("[name='" + target + "']").offset().top}, 800);
	return false;
});


для медитации Селекторы jquery
Ответить с цитированием
  #14 (permalink)  
Старый 26.08.2013, 21:37
Аспирант
Отправить личное сообщение для cOAPerator Посмотреть профиль Найти все сообщения от cOAPerator
 
Регистрация: 04.01.2012
Сообщений: 78

Сообщение от рони Посмотреть сообщение
cOAPerator,
про спецификации ...
В XHTML и HTML5 вместо name для определения якоря требуется указывать атрибут id.

а селектор изменить не судьба ?
$('a[href*="#"]').click(function(){
	// добавляем обрезку
    var target = $(this).attr('href').replace(/^[^#]+#/,'');
	$('html, body').animate({scrollTop: target ==  'top' ? 0 :$("[name='" + target + "']").offset().top}, 800);
	return false;
});


для медитации Селекторы jquery
теперь работают ссылки в документе, но не работает кнопка наверх

В XHTML и HTML5 вместо name для определения якоря требуется указывать атрибут id.
у меня html 4.01
Ответить с цитированием
  #15 (permalink)  
Старый 26.08.2013, 21:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

cOAPerator,
а самому подумать? как у вас кнопки вверх href выглядит?
Ответить с цитированием
  #16 (permalink)  
Старый 26.08.2013, 23:14
Аспирант
Отправить личное сообщение для cOAPerator Посмотреть профиль Найти все сообщения от cOAPerator
 
Регистрация: 04.01.2012
Сообщений: 78

рони, все я понял свою ошибку. исправил и все заработало

еще 1 последний вопрос, как отступ сделать от верха после прокрутки к якорю?
а то у меня вверху прикрепленное меню высотой 50px
и после перехода к якорю скрывается под менюшкой. я думал в css задать отступ, но это не вариант.
если правильно думаю то вот в этой строке
$('html, body').animate({scrollTop: target ==  'top' ? 0 :$("[name='" + target + "']").offset().top}, 800);

0 надо поменять на 100 - получится отступ в 100 px.

Последний раз редактировалось cOAPerator, 26.08.2013 в 23:22.
Ответить с цитированием
  #17 (permalink)  
Старый 26.08.2013, 23:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

cOAPerator,
да 0 на 100 это для прокрутки кверху --- если к якорям $("[name='" + target + "']").offset().top + 100 и пробуйте прежде чем спросить. и читайте доку прежде чем что-то делать.
Ответить с цитированием
  #18 (permalink)  
Старый 26.08.2013, 23:34
Аспирант
Отправить личное сообщение для cOAPerator Посмотреть профиль Найти все сообщения от cOAPerator
 
Регистрация: 04.01.2012
Сообщений: 78

рони, великодушное спасибо! за помощь и терпение! побольше бы таких людей как Вы!
Благодяря Вам я теперь понял как писать подобные скрипты.
Ответить с цитированием
  #19 (permalink)  
Старый 27.08.2013, 00:48
Аспирант
Отправить личное сообщение для cOAPerator Посмотреть профиль Найти все сообщения от cOAPerator
 
Регистрация: 04.01.2012
Сообщений: 78

рони, тут тобнаружился косяк один, неправильно прощитывается отступ:
посмотреть рабочий вариант можно тут
_http://starnox.ru/articles/php/upload-failov-i-vse-s-etim-svyazannoe.html


в опере и лисе все нормально прокручивает, соответственно просчет отступа нормально происходит,
проблема в хроме и webkit подобных.

Добавление: проблему решил сам, спасибо.

Последний раз редактировалось cOAPerator, 27.08.2013 в 02:45.
Ответить с цитированием
  #20 (permalink)  
Старый 27.08.2013, 02:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от cOAPerator
неправильно прощитывается отступ
что значит неправильно? догадаться?

две картинки -- правильно и неправильно и ещё стрелками указать - но возможно вам поможет
css
strong{
  display:  inline-block;
}
Ответить с цитированием
Ответ



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

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