我正在尝试使用原型框架来隐藏'< div>'基于特定的URL。我没有访问服务器端 - 所以我别无选择,只能使用原型[使用原型限制平台]。
想知道是否有人可以告诉我如何在原型框架中执行此操作?
即。我试图这样做但不起作用
Event.observe(窗口,'加载', function(){
var url = document.location.href;
if(url.indexOf('registered')> = 0){
。$$( '#侧面菜单右')隐藏(); }if(url.indexOf('login')> = 0) {$$('#side-menu-left')。hide(); }
});
喜欢一些帮助?
P.S - 从未使用过Prototype [jQuery man就在这里哟!]
答案 0 :(得分:0)
我刚刚在JS Bin做了一个测试用例抱怨:
Exception thrown: $$("#hello").hide is not a function
Caused by line (23/21): $$('#hello').hide();
(使用Prototype的最新版本)
使用时:
$('hello').style.display = "none";
它可以正常工作,请参阅example。
编辑:我调整了 example on 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>
答案 1 :(得分:0)
更改
$$('#side-menu-right').hide();
到
$('side-menu-right').hide();
希望这有帮助。
<强>原因强>
1)正如您所看到的,JQuery使用CSS表示法,而Prototype是直接Javascript(因此#side-menu-right
没有div
带有ID)。
2)Struts
和Prototype
使用$
而不 $$
。