Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery preventDefault第一次工作,但第二次不工作_Jquery - Fatal编程技术网

Jquery preventDefault第一次工作,但第二次不工作

Jquery preventDefault第一次工作,但第二次不工作,jquery,Jquery,我想通过ajax加载下一篇文章。第一次运行良好,但第二次站点加载全新的。违约似乎不起作用 我见过类似的问题,我已经使用了建议的解决方案,但它对我不起作用。(.on或.live方法) 这是我的密码: // Ajax load more posts var loadMorePosts = function(e){ e.preventDefault(); var $container = $("#primary");

我想通过ajax加载下一篇文章。第一次运行良好,但第二次站点加载全新的。违约似乎不起作用

我见过类似的问题,我已经使用了建议的解决方案,但它对我不起作用。(.on或.live方法)

这是我的密码:

        // Ajax load more posts
        var loadMorePosts = function(e){
            e.preventDefault();
            var $container = $("#primary");
            var $loadMoreButton = $("#nav-ajax .nav-more");
            var $nextPageLink = $loadMoreButton.find("a").attr("href");

            // do the ajax magic
            $.post($nextPageLink, function(data){
                var $mainWrap = $("#main-wrap", data);
                var $content = $mainWrap.find("#primary article");

                // add the loaded posts
                $container.append($content);

                // grab the next PageLink
                var $nextLoadMoreButton = $mainWrap.find("#nav-ajax .nav-more");
                $loadMoreButton.replaceWith($nextLoadMoreButton);


            }, "html");             
        } // end loadMorePosts


        // Bind Functions
        $("#nav-ajax .nav-more").on("click", loadMorePosts);
我做错了什么

提前谢谢你的帮助! Tommy

每次单击时,您都会将“加载更多按钮”替换为一个新按钮,根据这一行推断:

$loadMoreButton.replaceWith($nextLoadMoreButton);
这会导致单击事件绑定丢失,因为新替换的按钮不会继承绑定到其旧对应项的单击事件。您应该使用
.on()
,并监听出现在
文档
对象上的单击事件:

$(document).on("click", "#nav-ajax .nav-more", loadMorePosts);

$loadMoreButton.replaceWith($nextLoadMoreButton)您的新按钮可能没有您认为它有的事件。请对
on()
使用委派方法。。见文件。或者在更改html时再次绑定事件处理程序