循环遍历dom对象数组并首先找到匹配项

时间:2011-07-06 10:04:38

标签: javascript dhtml

我的eform顶部有一个导航栏,它会跳到下一个和上一个div(页面/部分),但前提是该div是可见的。除非使用复选框激活,否则隐藏div。因此,导航栏上的下一个按钮需要始终将您带到下一个可用的div。

以下代码适用于第一个按钮,但这些导航栏显示在每个部分的顶部,因此下一部分有一个下一个按钮,它运行相同的功能(这不起作用)我正在努力驱逐自己如果我没有意义,请大声喊叫。这是我的代码。

function showNext(){

    var pages = [document.getElementById("page2"),document.getElementById("page3")];
    var next = ["page2marker","page3marker"];

    for (var i=0; i<pages.length; i++){
        if(pages[i].style.display == "block"){
            window.location.hash = next[i];
        }
    }
}

我可以修改此功能,使其适用于所有按钮。即总是导航到下一个可见的div?我想我可能错过了一个技巧和一大堆信息,但看看你的想法,任何想法?

非常感谢

1 个答案:

答案 0 :(得分:0)

您可以使用jQuery和jQuery.next函数 - http://api.jquery.com/next/来实现此目的。

对于像这样的一组html:

<nav><a class="showNext">Show Next</a></nav>
<div class="content" style="display:none">I'm hidden</div>
<div class="content">I'm Visible</div>

您可以使用以下内容:

$('.showNext').bind('click', function(e) {
    e.stopPropagation();
    e.preventDefault();
    window.location.hash = $(this).next('.content:visible').attr('id') + 'marker';
});