Skip to content

Commit 802e75d

Browse files
committed
Add pjax:click event
1 parent 3a4c524 commit 802e75d

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ All events are fired from the container, not the link was clicked.
195195

196196
* `pjax:start` - Fired when pjaxing begins
197197
* `pjax:end` - Fired when pjaxing ends.
198+
`pjax:click` - Fired when pjaxified link is clicked
198199

199200
This pair events fire anytime a pjax request starts and finishes. This includes pjaxing on `popstate` and when pages are loaded from cache instead of making a request.
200201

jquery.pjax.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,14 @@ function handleClick(event, container, options) {
8989
fragment: null
9090
}
9191

92-
pjax($.extend({}, defaults, options))
92+
var opts = $.extend({}, defaults, options)
93+
var event = $.Event('pjax:click')
94+
$(link).trigger(event, [opts])
9395

94-
event.preventDefault()
96+
if (!event.isDefaultPrevented()) {
97+
pjax(opts)
98+
event.preventDefault()
99+
}
95100
}
96101

97102
// Public: pjax on form submit handler

test/unit/fn_pjax.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,4 +204,17 @@ if ($.support.pjax) {
204204
link.attr('href', "/dinosaurs.html#main")
205205
link.click()
206206
})
207+
208+
asyncTest("triggers pjax:click event from link", function() {
209+
var frame = this.frame
210+
211+
frame.$("#main").pjax("a").on("pjax:click", function(event, options) {
212+
ok(event)
213+
ok(options.container.is('#main'))
214+
ok(options.url.match("/dinosaurs.html"))
215+
start()
216+
})
217+
218+
frame.$("a[href='/dinosaurs.html']").click()
219+
})
207220
}

0 commit comments

Comments
 (0)