我试图用jquery做一系列的步骤,但我没有达到我想要的结果。
我有3个步骤,一个类.wiki-step-
加上一个数字。我的javascript是这样的:
function stepping() {
var stepButton = $("a.button");
var step = $("[class*='wiki-step-']");
stepButton.closest(step).hide().next(step).show();
}
$("a.button").on("click",function(){
stepping();
});
它只需要两个步骤就可以正常工作,但我注意到,如果我添加第三个步骤,jquery (next)
会同时显示所有其他步骤,但我只想显示行中的下一个div,而不是所有步骤。
这里有一个小提琴:https://jsfiddle.net/vsomcag2/1/你可以看到它是如何同时显示第二步和第三步的。
我想我不能使用nextUntil()
,我想我应该使用某种计数器,但我不知道从哪里开始。我希望避免指定数字,因为我希望能够在不编辑js的情况下添加或删除步骤。
任何帮助都是非常感谢的。
function stepping() {
var stepButton = $("a.button");
var step = $("[class*='wiki-step-']");
stepButton.closest(step).hide().next(step).show();
}
$("a.button").on("click",function(){
stepping();
});
div[class*="wiki-step-"] {
display: none;
width: 500px;
height: 500px;
border:1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wiki-step-1" style="display:block">
<h1>step 1</h1>
<a href="#" class="button">next</a>
</div>
<div class="wiki-step-2">
<h1>step 2</h1>
<a href="#" class="button">next</a>
</div>
<div class="wiki-step-3">
<h1>step 3</h1>
</div>
6条答案
按热度按时间wqsoz72f1#
您需要根据
clicked
对象a
和show hide
获取对该对象的引用。Here是jsfiddle
mec1mxoz2#
可能很简单:
演示:https://jsfiddle.net/vsomcag2/3/
bfnvny8b3#
如果你想一次只显示一个,你可以使用这个:
基本上,我所做的是将单击的元素传递给函数,该函数是单个元素而不是元素数组。
yrdbyhpb4#
尝试以下代码:
k2arahey5#
首先,您获取当前步骤(谁是可见的),然后检查在该步骤之后是否还有一个步骤,如果存在则显示该步骤,并隐藏当前步骤。
oxcyiej76#
我稍微修改了你的HTML和CSS,因为我相信数据属性对这类东西很有效。
我也只是用蛮力,隐藏一切,然后显示您需要的页面。我经常发现这种方法导致更少的错误,在某种程度上,它就像React在视图变成状态时的工作方式。因此,使其具有前一阶段将需要非常少的修改。