Har*_*tel 5 jquery jquery-ui jquery-plugins
我有以下结构.
<ul id="browser" class="filetree">
<li><span class="folder">Folder 1</span>
<ul>
<li><span class="file">Item 1.1</span></li>
</ul>
</li>
<li><span class="folder">Folder 2</span>
<ul>
<li><span class="folder">Subfolder 2.1</span>
<ul id="folder21">
<li><span class="file">File 2.1.1</span></li>
<li><span class="file">File 2.1.2</span></li>
</ul>
</li>
<li><span class="file">File 2.2</span></li>
</ul>
</li>
<li class="closed"><span class="folder">Folder 3 (closed at start)</span>
<ul>
<li><span class="file">File 3.1</span></li>
</ul>
</li>
<li><span class="file">File 4</span></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
在js我有以下功能.
$("#browser li").click(function(){
});
Run Code Online (Sandbox Code Playgroud)
当我点击li File 2.1.1时.该函数调用3次
第一次为li文件2.1.1,第二次为li子文件夹2.1,第三次为li文件夹2.
任何人都可以给我解决方案调用该函数一次吗?
您的帮助非常贴心.谢谢.
Nea*_*eal 13
那是因为你有很多 li元素#broswer.
试试这个:
$("#browser>li").click(function(){
//only direct children of #browser
//your code
});
Run Code Online (Sandbox Code Playgroud)
或者您可以使用event.stopPropagation():
$("#browser li").click(function(event){
event.stopPropagation();
//your code
});
Run Code Online (Sandbox Code Playgroud)
将功能更改为
$("#browser li").click(function(event){
event.stopPropagation();
//do your other stuff
});
Run Code Online (Sandbox Code Playgroud)
这样,对较低级别的点击li不会“冒泡”至较高级别li。