Click事件仅适用于第二篇文章

时间:2016-01-11 11:37:21

标签: javascript jquery

以下功能仅在刷新页面后才起作用。当页面再次刷新后,它会再次停止工作,依此类推。

<button id="moreBtn" type="button" class="archive btn btn-default col-sm-12"></button>
function ShowHideBtn() {
    var newss = 5;
    var numItems = $(".news").length;
    hidenews = "- Show Less Products";
    shownews = "+ Show More Products";

    $(".news:not(:lt(" + newss + "))").hide();
    $("hr:not(:lt(" + newss + "))").hide(); 

    if (numItems >= newss) {
        $(".archive").show();
        $(".archive").html(shownews);

        $(".archive").on("click", function (e) {
            e.preventDefault();
            if ($(".news:eq(" + newss + ")").is(":hidden")) {
                $("hr:hidden").show();
                $(".news:hidden").show();
                $(".archive").html( hidenews );
            } else {
                $("hr:not(:lt(" + newss + "))").hide();
                $(".news:not(:lt(" + newss + "))").hide();
                $(".archive").html(shownews);
            }
            return false; 
        });
    } else {
        $(".archive").hide();
    }
}

提前致谢

1 个答案:

答案 0 :(得分:0)

这是猜测,因为没有足够的信息来确认它。请提供完整页面的HTML /代码:

由于浏览器页面请求是无状态的(所以它无法知道它是否是所有其他负载),这听起来像是时间问题。 HTML通常在第一次加载速度较慢,因此如果JS代码位于它引用的元素之后(或者在DOM就绪处理程序中),那么它可能无法找到{{1元素。如果它是一个时间问题,它更可能是随机的,而不是“每隔一个页面加载”。

请尝试以下方法之一:

  1. 将JS代码(或JS脚本包含)放在它们引用的元素之后。就在此选项的典型结束.archive标记之前。
  2. 将您的代码放在DOM就绪处理程序中,然后它的位置无关紧要。例如像:

    (文档)$。就绪(函数(){      //你的代码在这里 });

  3. 或DOM准备好的快捷版:

    </body>