1

我正在尝试使用原型框架来隐藏基于特定 URL 的“< div >”。我无权访问服务器端 - 所以我别无选择,只能使用原型 [限制使用原型的平台]。

想知道是否有人可以告诉我如何在原型框架中做到这一点?

即我试图这样做但不起作用

Event.observe(window, 'load', function() {

var url = 文档.location.href;

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

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

});

爱一些帮助?

PS - 从未使用过 Prototype [jQuery man 就在这里哟!]

4

2 回答 2

0

我刚刚在JS Bin上做了一个测试用例,它抱怨:

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

(使用最新版本的原型)

使用时:

$('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>
于 2010-02-28T17:19:19.430 回答
0

改变

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

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

希望这可以帮助。

原因
1)如您所见,JQuery 使用 CSS 表示法,而 Prototype 是直接的 Javascript(所以没有#side-menu-rightID div)。

2)Struts并且Prototype使用$不是 $$

于 2010-02-28T17:22:16.690 回答