如何使用添加了jquery的伪元素点击功能
How to use a pseudo element added with jquery with the click function
我输入的代码有效,但我想使用之前创建的那个箭头 class,而不是以这种方式使用 li.parent
$('.Arrow').click(function ()...
,但它不起作用对我来说有可能实现吗?
$('ul#nav li.parent').before('<a class="arrow" href="#"></a>');
$(document).ready(function() {
$('.parent').click(function() {
$('.parent').not(this).find('.sub-nav.visible').removeClass('visible');
$('.sub-nav', this).toggleClass('visible'); //find .sub-nav of clicked .parent
});
});
#nav ul.sub-nav {
display: none;
}
#nav ul.visible {
display: block;
}
.arrow {
width: 10px;
height: 10px;
background: red;
display: inline-block;
float: right;
position: relative;
right: 50%;
margin-top: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="nav">
<li class="parent">Home
<ul class="sub-nav">
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
</li>
<li class="parent">About
<ul class="sub-nav">
<li>First</li>
<li>Second</li>
<li>Third</li>
</ul>
</li>
<li class="parent">Contact</li>
</ul>
$('.sub-nav').before('<a class="arrow" href="#"></a>');
$(document).ready(function() {
$('.arrow').click(function() {
var list = $(this).parent()
var subList = $(list).children('.sub-nav')
if(!$(subList).hasClass('visible')) {
$('.parent').not(this).find('.sub-nav.visible').removeClass('visible');
}
$(subList).toggleClass('visible');
});
});
#nav ul.sub-nav {
display: none;
}
#nav ul.visible {
display: block;
}
.arrow {
width: 10px;
height: 10px;
background: red;
display: inline-block;
float: right;
position: relative;
right: 50%;
margin-top: 5px;
cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="nav">
<li class="parent">Home
<ul class="sub-nav">
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
</li>
<li class="parent">About
<ul class="sub-nav">
<li>First</li>
<li>Second</li>
<li>Third</li>
</ul>
</li>
<li class="parent">Contact</li>
<li class="parent">Help
<ul class="sub-nav">
<li>First</li>
<li>Second</li>
<li>Third</li>
</ul>
</li>
<li class="parent">Argon
<ul class="sub-nav">
<li>First</li>
<li>Second</li>
<li>Third</li>
</ul>
</li>
</ul>
整理了一些代码库,但这应该可以满足您的需求。
编辑
向 JS 文件添加了一个 if 语句,用于处理对列表的重复点击,从而切换列表。
我输入的代码有效,但我想使用之前创建的那个箭头 class,而不是以这种方式使用 li.parent
$('.Arrow').click(function ()...
,但它不起作用对我来说有可能实现吗?
$('ul#nav li.parent').before('<a class="arrow" href="#"></a>');
$(document).ready(function() {
$('.parent').click(function() {
$('.parent').not(this).find('.sub-nav.visible').removeClass('visible');
$('.sub-nav', this).toggleClass('visible'); //find .sub-nav of clicked .parent
});
});
#nav ul.sub-nav {
display: none;
}
#nav ul.visible {
display: block;
}
.arrow {
width: 10px;
height: 10px;
background: red;
display: inline-block;
float: right;
position: relative;
right: 50%;
margin-top: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="nav">
<li class="parent">Home
<ul class="sub-nav">
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
</li>
<li class="parent">About
<ul class="sub-nav">
<li>First</li>
<li>Second</li>
<li>Third</li>
</ul>
</li>
<li class="parent">Contact</li>
</ul>
$('.sub-nav').before('<a class="arrow" href="#"></a>');
$(document).ready(function() {
$('.arrow').click(function() {
var list = $(this).parent()
var subList = $(list).children('.sub-nav')
if(!$(subList).hasClass('visible')) {
$('.parent').not(this).find('.sub-nav.visible').removeClass('visible');
}
$(subList).toggleClass('visible');
});
});
#nav ul.sub-nav {
display: none;
}
#nav ul.visible {
display: block;
}
.arrow {
width: 10px;
height: 10px;
background: red;
display: inline-block;
float: right;
position: relative;
right: 50%;
margin-top: 5px;
cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="nav">
<li class="parent">Home
<ul class="sub-nav">
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
</li>
<li class="parent">About
<ul class="sub-nav">
<li>First</li>
<li>Second</li>
<li>Third</li>
</ul>
</li>
<li class="parent">Contact</li>
<li class="parent">Help
<ul class="sub-nav">
<li>First</li>
<li>Second</li>
<li>Third</li>
</ul>
</li>
<li class="parent">Argon
<ul class="sub-nav">
<li>First</li>
<li>Second</li>
<li>Third</li>
</ul>
</li>
</ul>
整理了一些代码库,但这应该可以满足您的需求。
编辑
向 JS 文件添加了一个 if 语句,用于处理对列表的重复点击,从而切换列表。