javascript - 单击按钮时 Div 没有改变

标签 javascript jquery css html

我创建了一个网页,其中有一些大的 div

我在那个页面上有一个按钮。单击该按钮时,我希望当前的 div 发生变化并调出下一个 div

我已经写了一些代码,但不幸的是它不起作用:(

HTML:

<div class="tutorial">
    <p class="heading">Tell us about yourself</p>
    <div class="body">
        <table>
            <tr>
                <td>
                    <label for="full_name">What's your full name?</label>
                </td>
            </tr>
            <tr>
                <td>
                    <input type="text" name="full_name" id="full_name" placeholder="Full Name" />
                </td>
            </tr>
            <tr>
                <td>
                    <br/>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="about">Describe yourself:</label>
                </td>
            </tr>
            <tr>
                <td>
                    <textarea id="about" name="about" rows="5" cols="40" placeholder="Share you hobbies, interests and more about yourself"></textarea>
                </td>
            </tr>
            <tr>
                <td width="900px" height="60px"></td>
                <td>
                    <button id="next" class="btn">Next</button>
                </td>
            </tr>
        </table>
    </div>
</div>
<div class="tutorial hidden">
    <p class="heading">Tell us about yourself!</p>
    <div class="body">Body</div>
</div>
<div class="tutorial hidden">
    <p class="heading">Tell us about yourself!</p>
    <div class="body">Body</div>
</div>
<div class="tutorial hidden">
    <p class="heading">Tell us about yourself!</p>
    <div class="body">Body</div>
</div>
<div class="tutorial hidden">
    <p class="heading">Tell us about yourself!</p>
    <div class="body">Body</div>
</div>

JS:

$(function () {
    var tutorials = $("div.tutorial");
    var idNumber = 1;
    tutorials.each(function () {
        $(this).attr("id", idNumber);
        idNumber++;
    });

    var nextButton = $("#next");

    $(nextButton).on('click', function () {
        var currentTutorial = $("div.tutorial").not(".hidden");
        var currentTutorialId = currentTutorial.prop("id");
        currentTutorial.addClass("hidden");
        var nextTutorialId = currentTutorialId++;
        var nextDiv = null;
        if ($("div.tutorial").is("#" + nextTutorialId)) {
            var nextDiv = $("div.tutorial");
        }
        nextDiv.removeClass("hidden");
    });


});

删除了 CSS 以缩短问题的长度。 :)

我想要的: 我希望下一个按钮隐藏当前的 div 并调出紧随其后的下一个 div。

我做了什么:

var currentTutorial = $("div.tutorial").not(".hidden");
var currentTutorialId = currentTutorial.prop("id");
currentTutorial.addClass("hidden");
var nextTutorialId = currentTutorialId++;
var nextDiv = null;
if ($("div.tutorial").is("#" + nextTutorialId)) {
    var nextDiv = $("div.tutorial");
}
nextDiv.removeClass("hidden");

最佳答案

您正在尝试通过 id 选择,但是我没有看到 .tutorial div 的任何 id。但是,您可以简单地使用 next获取当前 div 的 nextSibling 的 jQuery 函数。您还必须确保至少有一个 div 最初没有 .hidden 类。

例如

$('div.tutorial:not(.hidden)').addClass('hidden').next().removeClass('hidden');

您需要从按钮中删除 id,而是使用一个类并更改您的选择器以进行点击绑定(bind)。 根据@koala_dev 的建议

关于javascript - 单击按钮时 Div 没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18303063/

相关文章:

javascript - flex 盒元素无法在 Chrome 上正确重新呈现

JavaScript 过滤器方法返回过滤后的数组和空数组

javascript - 将类/对象->function() 调用插入到 onsubmit 事件中

jquery - 切换内联样式背景色

javascript - 带有自定义滚动条(mCustomScrollbar)的自定义选择(Nice select)

javascript - 为什么document.getElementById().style.transform "transform"的="translateX()"只会翻译一次?

html - 绝对位置 div 内的绝对位置 div。如果外部 div 不是位置 : relative?,它如何工作

Javascript:for 循环 i++ 和 (i+1) 之间的区别

javascript - 简单表单无法在提交时关闭模式

html - 如何添加自定义图像背景以跨越 Bootstrap 按钮?