单击其他元素时重置功能
Reset function when other element is clicked on
我有一个导航,单击时显示下拉菜单,第二次单击时转到该url。当导航中的其他链接被点击时,我不知道如何取消该功能。我的问题是,当第一个链接被点击显示下拉列表,然后第二个链接将被点击显示其下拉列表时,但由于我已经设置了它,所以在第二个它就会进入url。因此,当再次点击第一个链接时,它将转到该url,而不是显示下拉菜单。这就是为什么当点击第二个链接时,我需要重置第一个链接功能,反之亦然。
我的小提琴榜样。
http://jsfiddle.net/3gpfc/37/
var visibleMenu1 = $('.menuHidden0 a');
var visibleMenu2 = $('.menuHidden1 a');
visibleMenu1.on('click', function () {
var clicks = $(this).data('clicks');
if (!clicks) {
$('.drop-nav0').addClass('menuVisible');
} else {
$('.drop-nav0').removeClass('menuVisible');
return true;
}
$(this).data("clicks", !clicks);
return false;
visibleMenu2.off('click');
});
visibleMenu2.on('click', function () {
var clicks = $(this).data('clicks');
if (!clicks) {
$('.drop-nav1').addClass('menuVisible');
} else {
$('.drop-nav1').removeClass('menuVisible');
return true;
}
$(this).data("clicks", !clicks);
return false;
visibleMenu1.off('click');
});
任何帮助都将不胜感激。
使用preventDefault()
而不是return false
。
要反转反向链接,您还需要重置其clicks
数据。
var visibleMenu1 = $('.menuHidden0 a');
var visibleMenu2 = $('.menuHidden1 a');
visibleMenu1.on('click', function (e) {
var clicks = $(this).data('clicks');
if (!clicks) {
e.preventDefault();
$('.drop-nav0').addClass('menuVisible');
} else {
$('.drop-nav0').removeClass('menuVisible');
}
$(this).data("clicks", !clicks);
visibleMenu2.data("clicks", !visibleMenu2.data("clicks"));
});
visibleMenu2.on('click', function (e) {
var clicks = $(this).data('clicks');
if (!clicks) {
e.preventDefault();
$('.drop-nav1').addClass('menuVisible');
} else {
$('.drop-nav1').removeClass('menuVisible');
}
$(this).data("clicks", !clicks);
visibleMenu1.data("clicks", !visibleMenu1.data("clicks"));
});
尝试使用此代码
var visibleMenu1 = $('.menuHidden0 a');
var visibleMenu2 = $('.menuHidden1 a');
visibleMenu1.on('click', function (e) {
if(!visibleMenu2.data("clicks")){
var clicks = $(this).data("clicks")
if(!clicks){
e.preventDefault();
$(".drop-nav0").addClass("menuVisible");
$(this).data("clicks", !clicks);
}else{
$(".drop-nav0").removeClass("menuVisible");
$(this).data("clicks", !clicks);
}
}else{
e.preventDefault();
$(".drop-nav1").removeClass("menuVisible");
visibleMenu2.data("clicks", false);
}
});
visibleMenu2.on('click', function (e) {
if(!visibleMenu1.data("clicks")){
var clicks = $(this).data("clicks")
if(!clicks){
e.preventDefault();
$(".drop-nav1").addClass("menuVisible");
$(this).data("clicks", !clicks);
}else{
$(".drop-nav1").removeClass("menuVisible");
$(this).data("clicks", !clicks);
}
}else{
e.preventDefault();
$(".drop-nav0").removeClass("menuVisible");
visibleMenu1.data("clicks", false);
}
});
相关文章:
- 除修剪外的其他功能
- 计时器在使用 jQuery 一分钟后没有触发,或者每 1 分钟后给出一些其他解决方案来触发功能
- jQuery插件与其他基本的显示/隐藏功能冲突
- 淡入、滑入和其他需要显示的功能:无无法正常工作
- 是否可以访问其他功能中的克隆
- Jquery停止在其他开关外壳内的开关盒上的更改功能
- 使用其他点击功能重新加载
- 多功能 javascript 停止其他如果警报取消
- 解释$apply和$eval |我可以用其他功能替换它们吗 |AngularJS.
- 如何根据茉莉花单元测试中的其他对象测试功能
- 创建范围功能在除IE以外的其他浏览器中不起作用
- 是否可以访问同一文件中的其他模块导出功能
- 向 Google Maps API 添加其他功能
- 我是否可以在 Bootstrap 3 中为折叠手风琴指定一个相对的“数据目标”,同时保留“折叠其他”功能
- document.ready在同一页上禁用其他功能
- 单击功能时取消选中其他单选按钮
- 如果中途发生其他事件,如何重置clickToggle功能
- 获取将图像调整为其容器大小的脚本的名称+其他功能
- 如何实现像YouTube/其他网站这样的页面功能
- 单击其他元素时重置功能