Javascript 单击一个后显示元素
比如说一组像这样的演员:Javascript 单击一个后显示元素,javascript,jquery,html,Javascript,Jquery,Html,比如说一组像这样的演员: <div class="foo" data-index="1">bar one</div> <div class="foo hidden" data-index="3">bar three</div> <div class="foo hidden" data-index="4">bar four</div> <div class="foo hidden" data-index="2">b
<div class="foo" data-index="1">bar one</div>
<div class="foo hidden" data-index="3">bar three</div>
<div class="foo hidden" data-index="4">bar four</div>
<div class="foo hidden" data-index="2">bar two</div>
。。。但我想在每次传递时暂停,等待用户单击
奖励:在obj中的最后一个项目上添加一个附加类(“last”)是我的下一个挑战。听起来像是在创建某种类型的DOM捉迷藏游戏。我认为下面的方法会起作用,它也会带来额外的好处
$('.foo').click(function(event)
{
var target = $(event.target);
var index = target.data('index');
var nextDiv = $('[data-index="' + (index + 1) + '"]');
var lastDiv = $('[data-index="' + (index + 2) + '"]');
nextDiv.removeClass('hidden');
if(lastDiv.length === 0)
{
nextDiv.addClass('last');
}
});
检查下面的JSFIDLE,让我知道这是否适合您
听起来像是在创建某种类型的DOM捉迷藏游戏。我认为下面的方法会起作用,它也会带来额外的好处
$('.foo').click(function(event)
{
var target = $(event.target);
var index = target.data('index');
var nextDiv = $('[data-index="' + (index + 1) + '"]');
var lastDiv = $('[data-index="' + (index + 2) + '"]');
nextDiv.removeClass('hidden');
if(lastDiv.length === 0)
{
nextDiv.addClass('last');
}
});
检查下面的JSFIDLE,让我知道这是否适合您
听起来像是在创建某种类型的DOM捉迷藏游戏。我认为下面的方法会起作用,它也会带来额外的好处
$('.foo').click(function(event)
{
var target = $(event.target);
var index = target.data('index');
var nextDiv = $('[data-index="' + (index + 1) + '"]');
var lastDiv = $('[data-index="' + (index + 2) + '"]');
nextDiv.removeClass('hidden');
if(lastDiv.length === 0)
{
nextDiv.addClass('last');
}
});
检查下面的JSFIDLE,让我知道这是否适合您
听起来像是在创建某种类型的DOM捉迷藏游戏。我认为下面的方法会起作用,它也会带来额外的好处
$('.foo').click(function(event)
{
var target = $(event.target);
var index = target.data('index');
var nextDiv = $('[data-index="' + (index + 1) + '"]');
var lastDiv = $('[data-index="' + (index + 2) + '"]');
nextDiv.removeClass('hidden');
if(lastDiv.length === 0)
{
nextDiv.addClass('last');
}
});
检查下面的JSFIDLE,让我知道这是否适合您
我只是想在cgatian的答案的基础上再接再厉,因为我对这个概念也很感兴趣。最后我用他的叉子做了两个不同的叉子。将当前数据索引存储在全局变量中,并在每次单击时递增。这不太令人印象深刻,甚至可能比最初的答案更糟。然而,我的第二次尝试要成功得多。以下是第二次尝试的代码:
$(document).ready(function() {
var elements = $("[data-index]");
elements.splice(0, 1);
elements.sort(function (a, b) {
return $(a).attr("data-index") - $(b).attr("data-index");
});
$(".foo").click(function (event) {
$(elements.splice(0, 1)).removeClass("hidden").addClass(elements.length == 0 ? "last" : "");
});
});
它将所有元素存储在一个全局变量中,然后将它们从最小的数据索引排序到最高的数据索引。这很好,因为它提供了很多灵活性。第一个或最后一个数据索引是什么并不重要,甚至跳过中间的一些数字也不重要。除此之外,您还可以通过在sort函数中将a改为b和b改为a来轻松地更改反向运行的顺序,这将稍微提高速度。您也不必在单击时查找任何元素。对于第二个问题。我只是想在cgatian的答案基础上进一步发展,因为我对这个概念也很感兴趣。最后我用他的叉子做了两个不同的叉子。将当前数据索引存储在全局变量中,并在每次单击时递增。这不太令人印象深刻,甚至可能比最初的答案更糟。然而,我的第二次尝试要成功得多。以下是第二次尝试的代码:
$(document).ready(function() {
var elements = $("[data-index]");
elements.splice(0, 1);
elements.sort(function (a, b) {
return $(a).attr("data-index") - $(b).attr("data-index");
});
$(".foo").click(function (event) {
$(elements.splice(0, 1)).removeClass("hidden").addClass(elements.length == 0 ? "last" : "");
});
});
它将所有元素存储在一个全局变量中,然后将它们从最小的数据索引排序到最高的数据索引。这很好,因为它提供了很多灵活性。第一个或最后一个数据索引是什么并不重要,甚至跳过中间的一些数字也不重要。除此之外,您还可以通过在sort函数中将a改为b和b改为a来轻松地更改反向运行的顺序,这将稍微提高速度。您也不必在单击时查找任何元素。对于第二个问题。我只是想在cgatian的答案基础上进一步发展,因为我对这个概念也很感兴趣。最后我用他的叉子做了两个不同的叉子。将当前数据索引存储在全局变量中,并在每次单击时递增。这不太令人印象深刻,甚至可能比最初的答案更糟。然而,我的第二次尝试要成功得多。以下是第二次尝试的代码:
$(document).ready(function() {
var elements = $("[data-index]");
elements.splice(0, 1);
elements.sort(function (a, b) {
return $(a).attr("data-index") - $(b).attr("data-index");
});
$(".foo").click(function (event) {
$(elements.splice(0, 1)).removeClass("hidden").addClass(elements.length == 0 ? "last" : "");
});
});
它将所有元素存储在一个全局变量中,然后将它们从最小的数据索引排序到最高的数据索引。这很好,因为它提供了很多灵活性。第一个或最后一个数据索引是什么并不重要,甚至跳过中间的一些数字也不重要。除此之外,您还可以通过在sort函数中将a改为b和b改为a来轻松地更改反向运行的顺序,这将稍微提高速度。您也不必在单击时查找任何元素。对于第二个问题。我只是想在cgatian的答案基础上进一步发展,因为我对这个概念也很感兴趣。最后我用他的叉子做了两个不同的叉子。将当前数据索引存储在全局变量中,并在每次单击时递增。这不太令人印象深刻,甚至可能比最初的答案更糟。然而,我的第二次尝试要成功得多。以下是第二次尝试的代码:
$(document).ready(function() {
var elements = $("[data-index]");
elements.splice(0, 1);
elements.sort(function (a, b) {
return $(a).attr("data-index") - $(b).attr("data-index");
});
$(".foo").click(function (event) {
$(elements.splice(0, 1)).removeClass("hidden").addClass(elements.length == 0 ? "last" : "");
});
});
它将所有元素存储在一个全局变量中,然后将它们从最小的数据索引排序到最高的数据索引。这很好,因为它提供了很多灵活性。第一个或最后一个数据索引是什么并不重要,甚至跳过中间的一些数字也不重要。除此之外,您还可以通过在sort函数中将a改为b和b改为a来轻松地更改反向运行的顺序,这将稍微提高速度。您也不必在单击时查找任何元素。对于第二个问题。因此,单击index=1的div,然后显示index=2?基本上是的。唯一未知的是总共将有多少个div。那么您单击的是divs,对吗?它们可以是任意顺序的,也许是随机的。当点击它们时,它们需要按数据索引的顺序出现,但在dom中不会按顺序出现。这就是为什么我需要首先排序。那么从视觉上看,它们需要重新排序吗?因此,单击索引为1的div,然后显示索引为2?基本上是的。唯一未知的是总共将有多少个div。那么您单击的是divs,对吗?它们可以是任意顺序的,也许是随机的。当点击它们时,它们需要按数据索引的顺序出现,但在dom中不会按顺序出现。这就是为什么我需要首先排序。那么从视觉上看,它们需要重新排序吗?因此,单击索引为1的div,然后显示索引为2?基本上是的。唯一未知的是总共将有多少个div。那么您单击的是divs,对吗?它们可以是任意顺序的,也许是随机的。当点击它们时,它们需要按数据索引的顺序出现,但在dom中不会按顺序出现。这就是为什么我需要先排序的原因。所以视觉上