点击事件只适用于第二个帖子

Click event only works on second post

本文关键字:第二个 适用于 事件      更新时间:2023-09-26

以下函数只有在刷新页面后才能工作。当页面之后再次刷新时,它会再次停止工作,依此类推

<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();
    }
}

提前感谢

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

由于浏览器页面请求是无状态的(所以它不知道是每隔一次加载),这听起来像是一个时间问题。HTML第一次加载通常会较慢,因此,如果JS代码位于其引用的元素之后(或位于DOM就绪处理程序内),则可能无法找到.archive元素。不过,如果这是一个时间问题,它更有可能是随机的,而不是"每隔一次页面加载"。

尝试以下操作之一:

  1. 将JS代码(或JS脚本include)放在它们引用的元素之后。就在关闭</body>标记之前,这是该选项的典型标记
  2. 将代码放在DOM就绪处理程序中,那么它的位置就无关紧要了。例如:

    $(document).ready(function){//此处为您的代码});

或者DOM就绪的快捷版本:

$(function(){
     // Your code here
});