链接/按钮被禁用,直到单击另一个按钮

我正在寻找一种方法来禁用左侧的所有菜单项。

在每个div上,都有一个Execute按钮和Next按钮。 在单击执行按钮之前,需要禁用下一个按钮。

除了启用下一个按钮之外,还需要启用菜单中的下一个项目并单击。

单击Next将转到左侧菜单上的下一个项目。

Javscript:

// nav $(".nav-content").hide(); $("ul.nav li:first").addClass("active").show(); $(".nav-content:first").show(); // onclick event $("ul.nav li").click(function() { $("ul.nav li").removeClass("active"); $(this).addClass("active"); $(".nav-content").hide(); var activenav = $(this).find("a").attr("href"); $(activenav).show(); return false; }); 

HTML

 

CSS

 #wrap { width: 100%; } #wrap ul.nav { list-style: none; padding: 0; margin: 0; width: 250px; float: left; } #wrap ul.nav li { min-height: 60px; background-color: #2b6ed6; border-bottom: 1px solid #92b4ea; } #wrap ul.nav li span { position: relative; vertical-align: middle; margin-right: 5px; font-size: 40px; } #wrap ul.nav li a { color: #fff; display: block; padding: 20px 10px; text-decoration: none; line-height: 20px; position: relative; top: 0px; font-size: 99%; } #wrap .enabled { } #wrap .disabled { } #wrap ul.nav li a:focus { outline: none; } /*#wrap ul.nav li.active, */ #wrap ul.nav li.active a { color: #000; } #wrap ul.nav li.active a:after { left: 100%; border: solid transparent; content:" "; height: 0; width: 0; position: absolute; pointer-events: none; } #wrap ul.nav li.active a:after { border-color: rgba(136, 183, 213, 0); border-left-color: #2b6ed6; border-width: 30px; top: 50%; margin-top: -30px; } #wrap .nav-container { float: left; margin: 0; padding: 0; width: 60%; border-right: 1px solid #ccc; border-bottom:1px solid #ccc; } #wrap .nav-content { margin: 0; padding: 0; } #wrap .nav-content p { padding: 0 0 0 35px; } 

我也把它放在http://jsfiddle.net/XVLaX/1/

谢谢!

根据我对这个问题的理解,这需要一些东西才能使这项工作成功。

对现有HTML进行一些前置条件更改以使以下JS代码起作用,我将ID添加到列表项中。

  

在CSS的一些前置条件添加中,我添加了一个禁用类来直观地区分状态。

 #csp-wrap ul.nav li.disabled a, #csp-wrap ul.nav li.active a { cursor: default; } #csp-wrap .disabled { filter: alpha(opacity=50); opacity: .5; } 

首先,您需要设置一个初始状态,其中除第一个列表项以外的所有列表项都被禁用,并且所有下一个按钮都被禁用

 // get all list items var listItems = $("ul.nav li"); // disable all list items listItems.addClass('disabled'); // enable the first list item listItems.first().removeClass('disabled'); // disable all next buttons $('.next').prop('disabled', true); 

为执行按钮设置单击处理程序,以启用关联的下一个按钮。

 // execute click handler $('.execute').click(function(event) { // Get the associated next button $(this).siblings('.next').prop('disabled', false); }); 

为下一个按钮创建一个单击处理程序,以处理继续下一步。

 // next click handler $('.next').click(function(event) { // get the associated nav item var navId = '#nav-' + $(this).parents('.nav-content').attr('id'); // enable the next list item $(navId).next().removeClass('disabled'); // trigger click on the next list item to step to it $(navId).next().trigger('click'); }); 

最后,修改onclick事件以不考虑活动列表项或任何禁用列表项。

 // onclick event $("ul.nav").on({ click: function () { $("ul.nav li").removeClass("active"); $(this).addClass("active"); $(".nav-content").hide(); var activenav = $(this).find("a").attr("href"); $(activenav).show(); return false; } }, 'li:not(.disabled,.active)'); 

你可以在叉形小提琴中试一试: http : //jsfiddle.net/UZwqx/3/