在.content分区内的4个分区之间导航



我有一个div.content,在这个div里面我有4个div(content-1,content-2,content-3,content-4)。

在这4个div中的每一个中,我都有两个按钮在这4个子div之间导航。

但我不知道如何正确地执行此操作,因为默认情况下,content-1div是显示的div,其他的都是隐藏的。

当我点击右边的按钮时,我想显示content-2div,但当我点击左边的按钮时我想返回到content-1div,但它不是这样工作的,在content-2div中,当我点击左按钮而不是显示content-1div时,它显示的是content-4div,我不知道如何做到这一点。

我在这里举了我的例子,这样你就可以更好地理解:http://jsfiddle.net/1t2xfw7e/

Jquery:

$(document).ready(function() {
    $(".left").click(function() {
        $(".content-1").hide();
        $(".content-4").show();
        return false;
    });
    $(".right").click(function() {
        $(".content-1").hide();
        $(".content-2").show();
        return false;
    });
});

不更改html标记。(这是有效的,但不是最佳的或完整的。这只是向你展示另一种方法):

JS-FIDDLE

$(document).ready(function() {
    $(".content a").on("click", function(e){
        if (e.target.className=="right") {
            $(this).parent().next().show();
            $(this).parent().hide();
        }
        else if (e.target.className=="left") {
            $(this).parent().prev().show();
            $(this).parent().hide();
        }
    });
});

因为div是相似的,我认为这个解决方案是有效的:

 function getCurrIndex(obj, isLeft) {
        var re = /content-([0-9])/gi
        var cDiv = re.exec($(obj).parent().prop('className'));
        if (cDiv.length == 2) {
            var cDivIndex = parseInt(cDiv[1]);
            if (isLeft == true) {
                cDivIndex -= 1;
            } else {
                cDivIndex += 1;
            }
            if (cDivIndex <= 0) {
                cDivIndex = 4;
            } else {
                if (cDivIndex >= 4) {
                    cDivIndex = 1;
                }
            }
        }
        return cDivIndex;
    }
    $(document).ready(function() {
        $(".left").click(function() {
            $(this).parent().hide();
            $(".content-" + getCurrIndex(this, true)).show();
            return false;
        });
        $(".right").click(function() {
            $(this).parent().hide();
            $(".content-" + getCurrIndex(this, false)).show();
            return false;
        });
    });

$(document).ready(function() {
    $(".navigate").click(function(e) {
        e.preventDefault();
        
        var $this = $(this);
        
        //hide this one
        $this.parent().hide();
        //show the one that has the matching class from the data element.
        $('.'+ $this.data('show')).show();
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="container">
    <div class="box-left">
        <div class="box-left-up">
            <h2>Test</h2>
            <div class="content">
                <div class="content-1">
                    <a class="navigate" href="#" data-show="content-4">Left</a>
                    <a class="navigate" href="#" data-show="content-2">Right</a>
                    <p>content 1</p>
                </div>
                <div class="content-2">
                    <a class="navigate" href="#" data-show="content-1">Left</a>
                    <a class="navigate" href="#" data-show="content-3">Right</a>
                    <p>content 2</p>
                </div>
                <div class="content-3">
                    <a class="navigate" href="#" data-show="content-2">Left</a>
                    <a class="navigate" href="#" data-show="content-4">Right</a>
                    <p>content 3</p>
                </div>
                <div class="content-4">
                    <a class="navigate" href="#" data-show="content-3">Left</a>
                    <a class="navigate" href="#" data-show="content-1">Right</a>
                    <p>content 4</p>
                </div>
                <div class="pages">
                    <p>Page 1 of 4</p>
                </div>
            </div>
        </div>
    </div>
</div>

在事件处理程序中使用$(this).parent().prev()$(this).parent().next()

$(document).ready(function() {
    $(".left").click(function() {
        $(this).parent().hide()
        $(this).parent().prev().show();
        return false;
    });
    $(".right").click(function() {
        $(this).parent().hide()
        $(this).parent().next().show();
        return false;
    });
});

http://jsfiddle.net/divyanthj/rtvn7L49/1/

此代码之所以有帮助,是因为根据您的规范,您希望向左或向右单击并显示或隐藏内容-1或内容-2。如果您想显示内容-3或内容-4,那么此代码会变得更加复杂。

使用返回多个"节点"的css类选择器是没有问题的,尽管这篇文章有一条注释。

$(".left").click(function () {
    $(".content-2").hide();
    $(".content-1").show();
    return false;
});
$(".right").click(function () {
    $(".content-1").hide();
    $(".content-2").show();
    return false;
});

最新更新