2016-11-02 2 views
0

私はこのガイドに従っていますhttps://cwiki.apache.org/confluence/pages/viewpage.action?pageId=87917とそれまでの作業です。 どのように私はこのコードを変更することができます、私はもはやAJAXの呼び出しにグローバルに反応しませんが、代わりに3つの特定のボタンの代わりに。特定の要素(Wicket)のビジーインジケータ

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(); 
    } 
} 

答えて

2

あなたが渡されたattributesオブジェクトを使用することができます。 c( 'component'用)というプロパティがあります。これはAjax呼び出しの原因となったHTML要素のIDです。

だから、あなたが何かのように行うことができます:答えのための

if (jQuery('#' + attributes.c).hasClass('showIndicator')) { 
    showBusysign(); 
} 
+0

これは良い音、私はそれを試してみましょう – greedsin