Объявление

Односложные и бессмысленные темы, не несущие полезную нагрузку или не содержащие в себе вопрос, будут удаляться!

#1 13-08-10 19:24:20

Luca
Участник
Здесь с 03-09-09
Сообщений: 1,545

on href

Есть простенький код, который разворачивает элемент при клике на него

<li><a href="#1" onclick="toggle_visibility('1');">- Куда я попал?</a></li>
<div id="1" style="display:none"><p>Вы попали на наш сайт</p></div>

Мне необходимо сделать обработку не только по onclick но и по простой ссылке, т.е. я даю ссылку
/#1
на элемент и он разворачивается. Как это сделать? Сейчас при переходе на ссылку элемент не раскрывается.

Вне форума

#2 13-08-10 19:31:53

Tiphon
Забанен
Здесь с 08-07-10
Сообщений: 2,718

Re: on href

Для таких вещей удобно использоввать
docs.jquery.com/Tutorials


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Вне форума

#3 13-08-10 20:28:51

Mike22
Участник
Здесь с 03-10-09
Сообщений: 1,032

Re: on href

Luca:
Т.е. чтобы раскрывалось от внешней ссылки?
Если да, то довольно простой JS в конце документа:
<SCRIPT>
var s = document.location + "";
var a = s.split("#");
if (a.length > 1) toggle_visibility(a[1]);
</SCRIPT>

Вне форума

#4 13-08-10 20:33:54

Luca
Участник
Здесь с 03-09-09
Сообщений: 1,545

Re: on href

Mike22,
Что-то не работает.
Вот посмотри сам JS код вместе с твоей вствкой:

<script type="text/javascript">
<!--
    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }
    
    var s = document.location + "";
    var a = s.split("#");
    if (a.length > 1) toggle_visibility(a[1]);
//-->
</script>

Вне форума

#5 13-08-10 21:11:49

Mike22
Участник
Здесь с 03-10-09
Сообщений: 1,032

Re: on href

Luca:

А где готовую страницу посмотреть с этим кодом и соответствующей ссылкой для проверки?
Этот <script> точно в самом низу документа?

Добавлено спустя 05 мин 40 с:
Вот я сделал себе страницу для примера:
aa.html
<div id='1' style='display: none'>TEST</DIV>

<script type="text/javascript">
<!--
    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }
   
    var s = document.location + "";
    var a = s.split("#");
    if (a.length > 1) toggle_visibility(a[1]);
//-->
</script>

file:///D:/aa.html#1 - надпись TEST видна, иначе - нет.

Или что-то другое имелось в виду?

Вне форума

#6 13-08-10 21:21:52

Luca
Участник
Здесь с 03-09-09
Сообщений: 1,545

Вне форума

#7 13-08-10 21:23:00

Mike22
Участник
Здесь с 03-10-09
Сообщений: 1,032

Re: on href

Luca:

Ээ...
    var s = document.location + "";
    var a = s.split("#");
    if (a.length > 1) toggle_visibility(a[1]);

должно быть не в теле функции, а за ним:
    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
   
   
    var s = document.location + "";
    var a = s.split("#");
    if (a.length > 1) toggle_visibility(a[1]);
    }

заменить на:
    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
   
    }

    var s = document.location + "";
    var a = s.split("#");
    if (a.length > 1) toggle_visibility(a[1]);

Отредактировано Mike22 (13-08-10 21:25:29)

Вне форума

#8 13-08-10 21:31:18

Luca
Участник
Здесь с 03-09-09
Сообщений: 1,545

Re: on href

Mike22,
Все спасибо разобрался! С вносом в тело функции сам ошибся т.к. проверял и так и сяк.

Добавлено спустя 35 мин 13 с:
Все новый FAQ по сайту залит. Единственное хотелось бы узнать, как сделать чтобы при открытии элемента на него не перебрасывало т.е. он просто бы открывался без сдвига к верхней части окна браузера?

Добавлено спустя 38 мин:
Причем в FireFox перебрасывает и при закрытии и при открытии свернутого элемента, в Opera только при его закрытии.

Вне форума

#9 13-08-10 22:10:06

Tiphon
Забанен
Здесь с 08-07-10
Сообщений: 2,718

Re: on href

Ну в jquery это preventdefaults(), но вы вроде без нее...

Добавлено спустя 07 мин 17 с:
Как-то совсем с этими перескоками невозможно там читать.
Я понимаю, что с джейквери у вас уже не сложилось, но посмотрите, как это делается в одну строчку...

Автоматическая открывалка-закрывался (с примерами)
api.jquery.com/slideToggle/
Далее, в джейквери .next() возвращает следующего соседа. Значит если у вас есть такие конструкции:

<a class="faqlink" ... >вопрос</a><div style="display:none">ответ</div>

(обратите внимание, класс у ссылки: faqlink), то скрипт для открытия и закрытия ответов (которые сами по себе display:none) будет выглядеть так:

$(".faqlink").click(function{ $(this).next().slideToggle();})

Это прописывается в onDocumentLoad один раз где-нибудь в хедере. Для всех ссылок вопрос и всех следующих за ними ответов это будет действовать.
Вся цена вопроса)

Ну и еще можно сказать, что при необходимости туда можно впаять библиотеку работы с куки, чтобы оно запоминало, что открыто, а что закрыто. Это еще одна строчка кода. Но еще один инклюд .js

Отредактировано Tiphon (14-08-10 13:50:19)


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Вне форума

#10 20-08-10 17:16:09

Luca
Участник
Здесь с 03-09-09
Сообщений: 1,545

Re: on href

Tiphon, окей обязательно посмотрю, но позже. Хотя если не сложно, не мог бы сделать готовый вариант?

Вне форума

#11 20-08-10 18:30:53

Tiphon
Забанен
Здесь с 08-07-10
Сообщений: 2,718

Re: on href

Выложил к знакомой на сайт.

alelya.ru/FAQ.aspx

Все там прокомментировано и должно быть просто и понятно.


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Вне форума

#12 21-08-10 05:56:43

Luca
Участник
Здесь с 03-09-09
Сообщений: 1,545

Re: on href

большое спасибо, днем постараюсь глянуть!

Вне форума

#13 21-08-10 08:28:41

Mike22
Участник
Здесь с 03-10-09
Сообщений: 1,032

Re: on href

Luca:

<a href="#" onclick="toggle_visibility('16');">

На

<a href="javascript:toggle_visibility('16');">

или, как вариант

<a onclick="toggle_visibility('16');">, но тогда перестанут работать стили для ссылок.

или как еще вариант, таки поставить ссылку на позицию самого элемента:
<a href="#16" onclick="toggle_visibility('16');">

Отредактировано Mike22 (21-08-10 08:32:36)

Вне форума

#14 21-08-10 14:21:11

Luca
Участник
Здесь с 03-09-09
Сообщений: 1,545

Re: on href

Tiphon,
Почему-то ссылки на элемент FAQ не разворачиваются
типа: stoplinux.org.ru/project/site-FAQ.html#6

И еще после после захода на страницу FAQ на сайте не возможно на любую другую страницу перейти.

Вне форума

#15 21-08-10 14:30:52

Tiphon
Забанен
Здесь с 08-07-10
Сообщений: 2,718

Re: on href

Luca пишет:

И еще после после хахода на страницу FAQ на сайте походу Java скрипты перестают вообще работать. Во всяком случае я с этой страницы даже перейти на другую не могу.

Oy prostite, vse delo v
$("a").click(function (event) { event.preventDefault(); });
otkluchaet VSE ssylky.

nado zamenit na
$("a.faqlink").click(function (event) { event.preventDefault(); });
chtoby otkluchit deystvie ssylok classa faqlink


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Вне форума

#16 21-08-10 14:33:06

Mike22
Участник
Здесь с 03-10-09
Сообщений: 1,032

Re: on href

*тихо балдеет от того, что сперва в ссылку за каким-то органом ставят href="#", а потом с ним героически сражаются с помощью jquerry*

Вне форума

#17 21-08-10 14:44:54

Tiphon
Забанен
Здесь с 08-07-10
Сообщений: 2,718

Re: on href

Mike22 пишет:

тихо балдеет от того, что сперва в ссылку за каким-то органом ставят href="#", а потом с ним героически сражаются с помощью jquerry

A potomu, chto raznye brauzery otnosyatsya k ssylkam po-raznomu daje esli ne stavit #, Nu i validaciya, poetomu preventDefault is better to use)) Skajite spasibo IE v tom chisle. I polsovatelyam ne perehodyashim na novye brauzery.

P.S. I slovo "героически сражаются" slishkom krasochno;
P.S.S. pishu translitom ibo gluki s kxkb v linux, ruki ih ispravit eshe ne doshli


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Вне форума

#18 21-08-10 15:04:19

Mike22
Участник
Здесь с 03-10-09
Сообщений: 1,032

Re: on href

Tiphon:

<A href="javascript:function()"> работает даже на IE 5.0, ибо классическое решение.

Вне форума

#19 21-08-10 15:13:41

Tiphon
Забанен
Здесь с 08-07-10
Сообщений: 2,718

Re: on href

Mike22 пишет:

<A href="javascript:function()"> работает даже на IE 5.0, ибо классическое решение.

nu ili javascript:void(0).
Ya tebe chestno skaju, chto ploho pomnu v chem tam delo bylo, ya uje goda 3 webom ne zanimalsya. Toli kakoy-nibud dikiy safari eto ne priemlil, toli full validaciu xhtml ono ne prohodilo. Ne pomnu=))) A jquery rabotaet vepde i ne zastavlyaet trahat mozg=)

Ya, kstati ne nastaivau na preventDefault


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Вне форума

#20 21-08-10 20:56:06

Plutonium
Oberststumbannfuhrer
Здесь с 25-07-10
Сообщений: 352

Re: on href

Mike22 пишет:

<A href="javascript:function()"> работает даже на IE 5.0, ибо классическое решение.

это не классическое решение, а самое верное, потому как если не добавлять псевдопротокол "javascript" страница будет убегать вверх. cool


Смысл жизни в том, чтобы найти этот смысл.

Вне форума

#21 21-08-10 22:23:14

Mike22
Участник
Здесь с 03-10-09
Сообщений: 1,032

Re: on href

Plutonium:

Есть и другие решения. Вот Tiphon предложил preventDefault(), как аналог preventDefault можно использовать return false:
<A href="#" onclick="function(); return false">

Можно отказаться от href, но тогда стили придется добавить в события.

<A onlick="function()" style='cursor: hand' onMouseOver="this.style='...'; " onMouseOut="this.style='...' ">

Можно указать позицию текущего элемента, тогда документ будет прыгать к нему же, что тоже приемлемо.

Отредактировано Mike22 (21-08-10 22:23:59)

Вне форума

#22 21-08-10 23:05:58

Tiphon
Забанен
Здесь с 08-07-10
Сообщений: 2,718

Re: on href

Беда только в том, что разные браузеры имеют разные взгляды на джава скрипт. А пользователи - имеют старые браузеры. Поэтому я, например, очень высоко оценил магию джей-квери и то, что работая с ней можно быстро делать высоко-интерактивные страницы (и эффекты, и анимация, и аджакс с разновидностями) не задумываясь о том, чтобы это работало с основными браузерами (тк.к. оно работает).
Вот я работал с вебом несколько лет назад. И все варианты вроде onMouseOver="this.style='..., подзабылись на столько, что я, смотря на них, не могу сказать, что они будут работать на всех браузерах, пока не напишу и не проверю на всех браузерах (т.е. потрачу время). А когда на каком-то браузере что-то работать не будет, то я еще слажу и потрахаюсь с ним))  (т.е. еще потрачу много времени)

А используя JQuery, я уверен и могу не тратить это время) И при этом очень просто получать офигенный результат) (Даже через несколько лет, когда в голове подробностей уже нет, а остались только концепции. )
Есть и минусы, но в случае в ФАКУ - их нет)


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Вне форума

#23 21-08-10 23:32:41

Mike22
Участник
Здесь с 03-10-09
Сообщений: 1,032

Re: on href

Tiphon:

Минус только один - огромное число быдлокодеров, которые тянут полный jQuerry по поводу и без. А он, например, на моей машине открывается 0.7 секунды даже из кеша. Тут jquerry_min, 0.05 секунды, в целом приемлемо.

Вне форума

#24 21-08-10 23:45:14

Tiphon
Забанен
Здесь с 08-07-10
Сообщений: 2,718

Re: on href

Mike22 пишет:

Минус только один

Угу, минус в быстродействии. Но в данном случае не сказывается)

А быдлокодеров всегда много, когда есть что-то более удобное)) Взять, например, питон)
Более удобное очень часто удобно, но медленно. Поэтому у быдлокодеров особенные проблемы с оптимизацией (остальное-то продумано за них)) .


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.011 сек, 7 запросов выполнено - Использовано памяти: 1.74 Мбайт (Пик: 1.82 Мбайт) ]