又陷入不着调的敲代码时光(虽然有时会有点废寝忘食,不过觉得还是很享受这个过程),再剩下仅有的时间里快马加鞭的升值自己的能力,对,我就是这样的现实,这样的实在,没有能力,即使能有个再大的再NB的“空壳子”(标签)等你去拿,我始终觉得浑身不那么痛快,在这“大是大非”的处境下,我始终觉得一切违反“顺其自然”的动作,终究有它消亡的一天!
那这两天又收获了哪些呢!然而这次焦点转到了前端,在前端遇到棘手的问题比较多,由于这次要实现站内搜索,所以需要对前台主题做一些整改,这个主题是基于emblog博客系统的,自己手动“移植”成静态版本,起初是删除了这个主题的pjax页面无刷新加载的,前段时间把这个功能加上了,当时也与前端等一些其他插件纠缠了大半天,主要时间还是与多说评论插件上的捣腾,最后勉强把它们之间的兼容关系捣腾利索,不过还是存在一些很细微的bug,不过不影响整体,就暂且没去管它。正好这次整改,少不了又要与pjax、多说评论插件它们掐上,那就借此把它们一网打尽吧!
解决这次pjax加载页面,花了不少时间,要想用pjax加载站内万博最新官网是多少检索,而它是个表单提交动作,不再是个a选择器的点击动作,那pjax默认的那个json配置项不再适用这个表达提交动作了,那就得另注册其它事件,查了资料之后,就是正如所料的submit事件,这时出来了一个新梗,不知为何自己下载的那个pjax包,没有那个submit事件,后来打开主题里的pjax包,它里面有这个事件,最后更换了这个包,经过测试,表单提交能实现pjax加载页面了,甚是开心!
绑定a标签的点击使用pjax加载(pjax内部默认已经注册):
$(document).pjax('a[target!=_blank]', '#contentleft', {fragment:'#contentleft', timeout: 6000}); //内部默认注册的代码 function fnPjax(selector, container, options) { var context = this return this.on('click.pjax', selector, function (event) { var opts = $.extend({}, optionsFor(container, options)) if (!opts.container) opts.container = $(this).attr('data-pjax') || context handleClick(event, "#contentleft", opts) }) }
绑定submit动作对象使用pjax加载:
$(document).on("submit", "form", "button", function(a) { $.pjax.submit(a, "#contentleft", { fragment: "#contentleft", timeout: 6000 }) });
接着后面完善pjax与多说插件之间的问题,主要还是与加载多说评论数之间的问题,pjax是基于ajax的一层封装,当然加载评论数加载就没一般请求获取的那么方便了,官网也给出了ajax加载评论信息的例子,上次在实现pjax技术时也已经弄好了,那就不用在捣腾如何加载评论信息了,只需做好pjax加载前与加载后的全局事件的控制就好了,自己统一在子页面定义pjaxEnd函数,里面封装当前子页面在页面加载完成后(也就是pjax加载完成后)所要执行的页面初始化的一些代码(比如ajax加载多说评论信息),然后这个pjaxEnd函数放在pjax:complete事件里调用,最后处理下之前遗留的小问题,就基本上完工了!
ajax加载多说评论数的部分代码:
<script>var duoshuoQuery = { short_name: "lingboblog" };</script> <script src="http://static.duoshuo.com/embed.js"></script> <script type="text/javascript"> function pjaxEnd() { $('pre').addClass('prettyprint linenums').attr('style', 'overflow:auto'); window.prettyPrint && prettyPrint(); var el = document.createElement('div');//该div不需要设置class="ds-thread" el.setAttribute('data-thread-key', @Model.Aid);//必选参数 el.setAttribute('data-url', 'http://@ViewBag.Url@Url.Action("Post", "Article", new { id = Model.Aid })');//必选参数 el.setAttribute('data-author-key', '1');//可选参数 DUOSHUO.EmbedThread(el); jQuery('#comments').empty().append(el).show(500); //ajax请求加载评论数 $.getJSON( "http://api.duoshuo.com/threads/counts.jsonp?short_name=lingboblog&threads=@Model.Aid&callback=?", function (dataduoshuo) { $.each(dataduoshuo.response, function (i, item) { $('#duoshuo').text(item.comments); $('#duoshuo1').text(item.comments); }); }); } </script>
很棒,对pjax又进一步的认识!
本文地址:http://www.lingbohome.com/Article/Post/28
版权声明:若无注明,本文皆为“凌波小屋”原创,转载请保留文章出处。
发表吐槽