Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击一个后显示元素_Javascript_Jquery_Html - Fatal编程技术网

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中不会按顺序出现。这就是为什么我需要先排序的原因。所以视觉上