有没有办法以编程方式从我的javascript文件中调用和执行pjax?

我有一个function,等待用户点击文本类型的输入,然后等待用户按向下和向上箭头键。 当用户按下向下和向上箭头键时,调用函数hoverDown(),它基本上以编程方式hover在表行上。 按下enter键时,将调用window.location并加载相应的页面。 问题是我在整个应用程序中使用pjax来动态加载内容并在没有页面刷新的情况下推送新URL。 当我调用window.location函数时,pjax不再起作用,而是加载了正确的url并且发生了整页刷新 – 这是我想要避免的事情。 有没有办法以编程方式从我的函数中调用和执行pjax? 相关代码:

// HTML

Name Title
Scott Client
BillyClient
GeorgeClient
SaraClient
JohnClient
MeganClient
BenClient
JullyClient
BethanyClient
AlenClient
JaneClient
AliceClient

//使用Javascript

 $(document).ready(function(){ $("#main").on("keydown", "#search", hoverDown); }); function hoverDown(e) { var $tbl = $('#tblDataBody'); var $cur = $('.active', $tbl).removeClass('active').first(); if (e.keyCode === 40) { //down if ($cur.length) { $cur.next().addClass('active'); } else { $tbl.children().first().addClass('active'); } } else if (e.keyCode == 38) { //up if ($cur.length) { $cur.prev().addClass('active'); } else { $tbl.children().last().addClass('active'); } } else if (e.keyCode == 13) { if ($cur.length) { window.location = $cur.find("a").attr("href"); } } } 

//为了完整起见,CSS:

 .active { background-color: yellow; } 

如果你想看到这个代码在行动中以便更好地理解,你可以查看这个jsFiddle。

而且,我正在尝试使用pjax来加载内容。

我不知道第一次在文档中我是如何错过这个,但我发现了一种手动调用pjax的简单方法。

 } else if (e.keyCode == 13) { if ($cur.length) { // manually invoke pjax after enter has been pressed var $url = $cur.find("a").attr("href"); $.pjax({url: $url, container: '#main'}); } } 

阅读了你链接的$.pjax.click ,我相信你应该使用$.pjax.click函数,而不是将你的URL分配给window.location

 var container = $(this).closest('[data-pjax-container]') $.pjax.click(event, {container: container}) 

看看Djax:Dynamic Pjax

https://github.com/beezee/djax