我正在遵循本指南https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=87917及其目前的工作。 我怎样才能修改这段代码,我不再对ajax调用做出全局反应,而是仅举例说明3个特定的按钮。
window.onload = setupFunc;
function setupFunc() {
// ? $('.test').on('click',clickFunc);
hideBusysign();
Wicket.Event.subscribe('/ajax/call/beforeSend', function(attributes, jqXHR, settings) {
showBusysign();
});
Wicket.Event.subscribe('/ajax/call/complete', function(attributes, jqXHR, textStatus) {
hideBusysign();
});
}
function hideBusysign() {
$('#loader').hide();
}
function showBusysign() {
$('#loader').show();
}
function clickFunc(eventData) {
var clickedElement = (window.event)? event.srcElement: eventData.target;
if ((clickedElement.tagName.toUpperCase() == 'BUTTON' || clickedElement.tagName.toUpperCase() == 'A' || clickedElement.parentNode.tagName.toUpperCase() == 'A' || (clickedElement.tagName.toUpperCase() == 'INPUT' && (clickedElement.type.toUpperCase() == 'BUTTON' || clickedElement.type.toUpperCase() == 'SUBMIT'))) && clickedElement.parentNode.id.toUpperCase() != 'NOBUSY') {
showBusysign();
}
}
答案 0 :(得分:2)
您可以使用传递的attributes
对象。它有一个名为c
的属性(对于'component') - 这是导致Ajax调用的HTML元素的id。
所以你可以这样做:
if (jQuery('#' + attributes.c).hasClass('showIndicator')) {
showBusysign();
}
答案 1 :(得分:1)
实施IAjaxIndicatorAware以按组件显示Ajax指标:
https://ci.apache.org/projects/wicket/guide/6.x/guide/ajax.html#ajax_4