Javascript 带有jquery和HTML列表元素的样式化选择字段
我的样式选择字段有点问题。我用于这个无序列表元素UL/LI和H3 问题是通过单击页面上的任意位置来关闭Selectfield。 当我将click事件绑定到文档时,不要用当前jQuery代码打开SelectField 我使用CSS display:none隐藏了UL元素。 打开选择字段不是问题所在。但是只有在没有$document.bind'click'[…]代码的情况下才可以 我希望每个人都能为我的计划下一个决心。 谢谢 下面是我的HTML代码:Javascript 带有jquery和HTML列表元素的样式化选择字段,javascript,jquery,Javascript,Jquery,我的样式选择字段有点问题。我用于这个无序列表元素UL/LI和H3 问题是通过单击页面上的任意位置来关闭Selectfield。 当我将click事件绑定到文档时,不要用当前jQuery代码打开SelectField 我使用CSS display:none隐藏了UL元素。 打开选择字段不是问题所在。但是只有在没有$document.bind'click'[…]代码的情况下才可以 我希望每个人都能为我的计划下一个决心。 谢谢 下面是我的HTML代码: <div class="select_co
<div class="select_container">
<h3 class="reset">Select Items</h3>
<ul class="select_elements">
<li>Select Item 01</li>
<li>Select Item 02</li>
<li>Select Item 03</li>
</ul>
</div>
您需要在$'中使用.stopPropagation。选择_container'。on'click'函数可防止触发$document。on'click'
您需要在$document中使用toggleClass。单击也可以
在jquery和javascript中,会出现一个事件,因此必须在容器单击时使用e.stopPropagation。 检查这些页面或,您的问题的可能解决方案可能是
<script type="text/javascript">
$(document).ready(function(){
var selectFields = {
init: function(){
$(document).bind('click',function(e){
if( !$('ul').hasClass('active')){
$('ul').hide()
$(this).find('ul.select_elements').toggleClass('active');
}
});
$('.select_container').on('click',function(e){
e.stopPropagation()
if( $('ul').hasClass('active')){
$('ul').show()
}else{ $('ul').hide() }
$(this).find('ul.select_elements').toggleClass('active');
});
}
};
$(selectFields.init);
})
</script>
当您单击列表时,使用StopRopAgation可防止事件冒泡并被文档捕获
在某些情况下,您还可以使用stopImmediatePropagation,以了解stopPropagation和stopImmediatePropagation之间的区别,请查看此帖子
类似代码以及to和Batu Zet代码的唯一缺点是,如果您希望列表中的项目可以在不消失的情况下被单击,则必须在ul标签上添加另一个stopPropagation
这是决赛
$('.select_container').on('click',function(e){
$(this).find('ul.select_elements').toggle();
$(this).find('ul.select_elements').toggleClass('active');
e.stopPropagation();
});
$(document).on('click',function(){
if( $('.select_elements').is(':visible')){
$('.active').hide();
$('.select_elements').toggleClass('active');
}
else {
console.log('visible false ...');
}
});
<script type="text/javascript">
$(document).ready(function(){
var selectFields = {
init: function(){
$(document).bind('click',function(e){
if( !$('ul').hasClass('active')){
$('ul').hide()
$(this).find('ul.select_elements').toggleClass('active');
}
});
$('.select_container').on('click',function(e){
e.stopPropagation()
if( $('ul').hasClass('active')){
$('ul').show()
}else{ $('ul').hide() }
$(this).find('ul.select_elements').toggleClass('active');
});
}
};
$(selectFields.init);
})
</script>