这是一个多级菜单。当我点击链接"关于"它打开子菜单,其中包含3个链接Johnny,Julie&杰米。
当我点击"关于"再次,它关闭菜单。单击子菜单也会关闭菜单,我想避免使用。
如果我点击子菜单(Johnny,Julie& Jamie),我如何避免关闭打开的子菜单?
$('li.parent').click(function() {
$(this).find('.sub-nav').toggleClass('visible');
});

#nav ul.sub-nav {
display: none;
}
#nav ul.visible {
display: block;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="nav">
<li class="parent">About
<ul class="sub-nav">
<li><a href="#">Johnny</a>
</li>
<li><a href="#">Julie</a>
</li>
<li><a href="#">Jamie</a>
</li>
</ul>
</li>
<li class="parent">AnotherLink
<ul class="sub-nav">
<li><a href="#">Martin</a>
</li>
<li><a href="#">Rasmus</a>
</li>
<li><a href="#">Morten</a>
</li>
</ul>
</li>
</ul>
&#13;
答案 0 :(得分:3)
对于子元素的stopPropagation
方法的替代方法是添加一个小的检查,如果被点击的元素是当前元素(而不是它的后代):
import UIKit
import XCTest
class MainViewControllerTests: XCTestCase {
var controller: MainViewController!
override func setUp() {
super.setUp()
controller = MainViewController()
controller.view.description
}
override func tearDown() {
super.tearDown()
}
func testTableViewOutlet() {
XCTAssertNotNil(controller.tableView)
}
func testTableViewCellForRowAtIndexPath() {
let indexPath = NSIndexPath(forRow: 0, inSection: 0)
let cell = controller.tableView(controller.tableView, cellForRowAtIndexPath: indexPath) as! CustomCell
XCTAssertEqual(cell.countryLabel.text!, "USA")
XCTAssertEqual(cell.capitalLabel.text!, "Washington, D.C.")
}
}
$('li.parent').click(function(e) {
if (this === e.target)
$(this).find('.sub-nav').toggleClass('visible');
});
&#13;
$('li.parent').click(function(e) {
if (this === e.target)
$(this).find('.sub-nav').toggleClass('visible');
});
&#13;
#nav ul.sub-nav {
display: none;
}
#nav ul.visible {
display: block;
}
&#13;
答案 1 :(得分:2)
您需要在子锚元素上发生<Style TargetType="MenuItem">
<Style.Resources>
<Style TargetType="ContentPresenter">
<Style.Triggers>
<Trigger Property="ContentSource" Value="Icon">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Image Source="{Binding}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Style.Resources>
<Setter Property="Icon" Value="{Binding Icon,
Converter={StaticResource ImageToSourceConverter}}"/>
<!-- ... -->
</Style>
事件:
stopPropagation
答案 2 :(得分:0)
您需要阻止将final String url = "http://DATA/create";
元素上的点击传输到您的事件处理程序:https://api.jquery.com/event.stoppropagation/