我已将 Prototype 库添加到我的网站,然后添加以下代码。但是当我点击跨度时,ul内容不会被隐藏。链接href仍然有用。
Event.observe(window, 'load', function() {
Event.observe('.block-category li.parent span', 'click', function(e){
$('.block-category li.parent ul').toggle();
e.preventDefault();
});
});
HTML:
<div class="block block-category">
<li class="level-top parent">
<a href="example.com/...."><span>text one</span></a>
<ul> //the 1 ul
<li><a><span>....</span></a></li>
<li><a><span>....</span></a></li>
<li><a><span>....</span></a></li>
<li><a><span>....</span></a></li>
</ul>
</li>
<li class="level-top"><a href="..."><span>....</span></a></li>
<li class="level-top parent">
<a href="example.com/...."><span>text two</span></a>
<ul> //the 2 ul
<li><a><span>....</span></a></li>
</ul>
</li>
<li class="level-top parent">
<a href="example.com/...."><span>text three</span></a>
<ul>
<li><a><span>....</span></a></li>
<li><a><span>....</span></a></li>
</ul>
</li>
</div>
谢谢。
ps :点击发送文字时,1 ul切换。点击* 文本二 * 2 ul切换,...
答案 0 :(得分:1)
您正在使用CSS选择器作为Prototype的$()
和Event.observe()
函数的参数。这两个函数都不接受选择器。他们都期望元素ID。
您可以使用$$()
代替$()
并为其指定选择器。请注意,这将返回一个扩展元素数组,而不仅仅是一个元素。
http://api.prototypejs.org/dom/Event/observe/
http://api.prototypejs.org/dom/dollar/
http://api.prototypejs.org/dom/dollar-dollar/
答案 1 :(得分:0)
您应该尝试$$
选择多个元素,然后为每个元素调用observe:
Event.observe(window, 'load', function() {
$$('.block-category li.parent > a span').each(function (element) {
element.observe('click', function (e) {
e.element().up().next('ul').toggle();
e.preventDefault();
});
});
});