我已经定义了一个功能,可以捕获带有data-remote
标记的链接上的鼠标点击,如下所示。
// Global AJAX request handler
$(document).ready(function() {
$(document).on('click', 'a[data-remote]', function(event) {
var target = $(event.target);
var url = $(this).data('url');
var method = $(this).data('method');
$.ajax(url, {type: method, data: $(this).data()})
.done(function(data){
target.trigger('complete', data);
})
.fail(function(data) {
target.trigger('failure', data);
});
});
});
该函数捕获done
和fail
个事件,然后继续触发最初被点击以启动的元素的新自定义事件(complete
或failure
)整件事。
在其他地方,现在可以做类似的事情......
$('#list').on('complete', 'a[data-remote]', function() {
$(this).hide();
});
...隐藏被点击的元素,只要AJAX调用成功。
感觉就像捕获一个事件并立即触发一个新事件有点令人费解。 jQuery提供了一种更简单的方法吗?我查看了ajaxSuccess
事件...
$('#list').on('ajaxSuccess', 'a[data-remote]', function() {
$(this).hide();
});
......但它没有触发。有明显的原因吗?