停止javascript关闭打开的折叠列表
下面我有一个简单的java脚本,用于打开和关闭可折叠列表。列表中有链接,当您单击打开新窗口的链接时,列表将折叠。我想保持列表打开时,点击这样的链接 Java脚本停止javascript关闭打开的折叠列表,javascript,Javascript,下面我有一个简单的java脚本,用于打开和关闭可折叠列表。列表中有链接,当您单击打开新窗口的链接时,列表将折叠。我想保持列表打开时,点击这样的链接 Java脚本 function dropDown(li) { var submenu = li.getElementsByTagName('ul')[0]; var x = "de" + li.id; if (submenu) { submenu.style.display = submenu.style.display == "block"
function dropDown(li) {
var submenu = li.getElementsByTagName('ul')[0];
var x = "de" + li.id;
if (submenu) {
submenu.style.display = submenu.style.display == "block" ? "" : "block";
}
if (document.getElementById(x).getAttribute('src') == "plus.gif") {
document.getElementById(x).src = "minus.gif";
} else if (document.getElementById(x).getAttribute('src') == "minus.gif") {
document.getElementById(x).src = "plus.gif";
}
}
我的HTML
<ul class="doclist">
<li onClick="dropDown(this);" id="1"> <a><image src="plus.gif" width="10" id="de1"> <b>My Reports</b></a>
<ul>
<li>
<A HREF="report1.pdf" TARGET="new"><B>Report 1</B></A></li>
</ul>
</li>
<P>
<li onClick="dropDown(this);" id="2">
<a><image src="plus.gif" width="10" id="de2"> <b>Other Reports</b></a>
<ul>
<li>
<A HREF="report20.pdf" TARGET="new"><B>Report 20</B></A></li>
<li> <A HREF="report21.pdf" TARGET="new"><B>Report 21</B></A></li>
</ul>
</li>
</ul>
JSFIDLE上的示例-答案是将此添加到列表中的每个链接
onClick="event.stopPropagation();"
所以链接现在看起来像这样
<A HREF="report20.pdf" TARGET="new" onClick="event.stopPropagation();"><B>Report 20</B></A>
但请注意,这还没有经过测试。您的问题似乎与事件冒泡有关(取消此项,谷歌是您的朋友)。我想这类菜单有很多选择。使用现成的不是更好吗?你也应该发布相关的CSS。如果你能把所有这些都放在一个更好的地方,下面是我不能在注释中添加多行的注释。我已经在jsfiddle上创建了一个工作模型,但是我无法让jsfiddle读取javascript,所以我只是将它添加到html部分。如果单击其中一个报告链接,您将看到它关闭列表。
<A HREF="report20.pdf" TARGET="new" onClick="event.stopPropagation();"><B>Report 20</B></A>
event.cancelBubble = true;