A onclick="return" - highslide

Статус
Закрыто для дальнейших ответов.

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Использую на сайте скрипт highslide.
Но валидатор ругается на хтмл вида:
<a href="..." onclick="return hs.expand(this);"

Пытался вынести это в js
Код:
$('a.highslide').click(function(){
  hs.expand(this);
  return false;
})
Но то ли false не передается, то ли еще чего, но при клике переходит по ссылке, а не как положено.

Как же решить проблему с валидацией?
 

brevis

Well-Known Member
Регистрация
10.08.2010
Сообщения
452
Нужно это дело вставить

Код:
$(document).ready(function(){
 /* сюда  */
});
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Ну это я понимаю, да и событие вешается, потому что срабатывает highslide, появляется индикатор загрузки картинки, как и должно быть, но потом просто переходит по ссылке
 

blackcot

Well-Known Member
Регистрация
10.09.2009
Сообщения
439
А что у Вас стоит в параметре href тега a?
Что бы предотвратить переход попробуйте поставить там javascript:void(0);
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Там у меня стоит ссылка на картинку, я понимаю что так можно будет сделать, но тогда будут проблемы без яваскрипта, и по клику правой кнопкой(открыть в новой вкладке) у пользователей не будет ничего открываться, это тоже не вариант
 

blackcot

Well-Known Member
Регистрация
10.09.2009
Сообщения
439
Попробуйте вынести скрипт в отдельную функцию, тогда она(функция) будет возвращать определенный результат - false или true.
Вот так, например:
Код:
function AAA(v)
{
 hs.expand(v); 
  return false; 
}
И в HTML коде:
Код:
<a href="..." onclick="return AAA(this);"...
Должно сработать...

В таком виде:
Код:
$('a.highslide').click(function(){ 
  hs.expand(this); 
  return false; 
}
false обработчику тега a не передается!
 

Abrogen

Убью нахер
Регистрация
18.08.2010
Сообщения
190
Код:
$('a.highslide').click(function(){ 
  return hs.expand(this);
}
А разве так не работает?

или ещё вариант, не знаю реакцию w3c, но всё же
Код:
<a href="..." onclick="hs.expand(this); return false;"
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Ну собственно hs.expand(this) - и должен возвращать false; это я и так для надежности, вот дело в том что сейчас:
Код:
<a href="..." onclick="return hs.expand(this);"
И все работает, возвращается false и не происходит перехода, но именно на это и ругается валидатор, о чем я собственно и задавал вопрос)
 

blackcot

Well-Known Member
Регистрация
10.09.2009
Сообщения
439
Я же и говорю - вынесите return hs.expand(this); в пользовательскую функцию и валидатор это пропустит.
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Извиняюсь blackcot, я действительно пропустил ваше сообщение.
Но замена на "return AAA(this);" не помогла, так как переход по ссылке все равно происходил.
Как оказалось достаточно было погуглить "Javascript как предотвратить переход по ссылке"
В итоге это вылилось в решение:
Код:
$(document).ready(function(){
	$('a.highslide').click(function(e){
		hs.expand(this);
		e.preventDefault();
	});
	//...
}
Вопрос решен ;)
 
Статус
Закрыто для дальнейших ответов.
Верх Низ