Скрыть / показать <div>в соответствии с URL в прототипе - PullRequest
1 голос
/ 28 февраля 2010

Я пытаюсь использовать прототип фреймворка, чтобы скрыть

на основе определенного URL. У меня нет доступа к серверной части - поэтому у меня нет выбора, кроме как сделать это с помощью прототипа [ограничение платформы с использованием прототипа].

Хотите знать, кто-то может сказать мне, как это сделать в прототипе фреймворка?

т.е. Я пытался сделать это, но не работает

Event.observe (окно, «загрузка», function () {

var url = document.location.href;

if (url.indexOf ('зарегистрирован')> = 0) {
. $$ ( '# боковое меню правой') скрыть (); }

if (url.indexOf ('login')> = 0) {$$ ('# side-menu-left'). hide (); }

* * 1016});

Любите помочь?

P.S. - Никогда не использовал Prototype [jQuery man прямо здесь yo!]

Ответы [ 2 ]

0 голосов
/ 28 февраля 2010

Изменение

$$('#side-menu-right').hide();

до

$('side-menu-right').hide();

Надеюсь, это поможет.

Причина
1) Как вы можете видеть, JQuery использует нотацию CSS, в то время как Prototype - это прямой Javascript (поэтому #side-menu-right для div с идентификатором отсутствует).

2) Struts и Prototype использует $ и , а не $$.

0 голосов
/ 28 февраля 2010

Я только что сделал контрольный пример для JS Bin , который жалуется:

Exception thrown: $$("#hello").hide is not a function
Caused by line (23/21): $$('#hello').hide();

(используется последняя версия Prototype)

При использовании:

$('hello').style.display = "none";

работает правильно, см. пример .

РЕДАКТИРОВАТЬ: Я настроил пример в JS Bin , чтобы условно добавить имя класса в body до того, как будет достигнут соответствующий элемент. Использование

.registered-user #hello { display: none; }

Элемент вообще не отображается. Это не самое аккуратное решение, поскольку вы должны добавить script в середине документа, но оно работает. Если кто-то знает лучшее решение, скажите, пожалуйста.

<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/prototype/1/prototype.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<style>
  .registered-user #hello { display: none; }
</style>
</head>
<body>
  <script>
    if (document.location.href.indexOf('registered')>=0)
      $$('body')[0].addClassName('registered-user');
  </script>
  <p id="hello">Hello World</p>
</body>
</html>
...