On Thu, Mar 15, 2012 at 2:51 PM, Stijn de Witt
<stijn.dew...@planonsoftware.com> wrote:
> Hi Martin, thanks for your quick response!
>
>>> AFAIK jQuery unbinds all registered event listeners for a DOM element when 
>>> this element is removed with jQuery method like #remove(), #replaceWith(), 
>>> etc.
>
> I think so too... However I am not sure that that is indeed the way that 
> Wicket removes components that are replaced by an Ajax request? I think 
> Wicket relies on their own code that they based on Prototype JS ?

No. Including version 1.5 Wicket uses its own JavaScript code to do
this (see wicket-ajax.js #replaceOuterHtml()).
In Wicket 6.0 jQuery is used behind the scenes and this method is
implemented with: jQuery(oldElement).after(newElementHtml".remove().

If upgrading to Wicket 6.0-SNAPSHOT is not an option for you then you
can use monkey patching approach to override the old impl in 1.5

>
>>> Better ask in jQuery forums.
>
> I am not sure if that is the right place. Seems to me that Wicket is doing 
> the inserting / removing of the components for the page. The statement() 
> method lets me hook into the insertion phase to add my own listeners (be it 
> with jQuery or any other framework) so it seems to me there should also be a 
> corresponding method for the removing phase where you can unhook/unbind 
> events etc...
>
> -Stijn
>
>
> -----Original Message-----
> From: Martin Grigorov [mailto:mgrigo...@apache.org]
> Sent: donderdag 15 maart 2012 13:32
> To: users@wicket.apache.org
> Subject: Re: How to cleanup when plugin/behavior is removed through Ajax?
>
> Hi,
>
> AFAIK jQuery unbinds all registered event listeners for a DOM element when 
> this element is removed with jQuery method like #remove(), #replaceWith(), 
> etc.
> But I'm not sure this is the case when you remove a parent element of an 
> element with event listeners. Better ask in jQuery forums.
>
> On Thu, Mar 15, 2012 at 11:22 AM, Stijn de Witt 
> <stijn.dew...@planonsoftware.com> wrote:
>> Hi. We are using WiQuery in our application to attach some behaviors to some 
>> components. For example a resize behavior to react on the component being 
>> resized. I added some debug logging and I see that when we switch panels 
>> (through Ajax) all event listeners for the components on the new panel are 
>> added, but the old ones from the panel being replaced are never removed. So 
>> the list of event handlers just grows and grows...
>>
>> We register event listeners in the statement method of the WiQuery behavior, 
>> like this:
>>
>> public abstract class BaResizeEventBehavior extends
>> WiQueryAbstractBehavior {
>>  // ...
>>  @Override public JsStatement statement() {
>>    return new JsQuery(getComponent()).$().chain("resize", new
>> JsScope() {
>>      @Override public void execute(JsScopeContext aScopeContext) {
>>        // event listener implementation here
>>      }
>>    });
>>  }
>> }
>>
>> This will generate Javascript code that looks like this:
>>
>> $('#componentId').resize(function() {
>>  // event listener implementation here });
>>
>> This code will register a jQuery event on the component with id 
>> 'componentId'. However when this component disappears from the page, I would 
>> like this event handler to be unbound again, but that does not happen.
>>
>> Any ideas?
>>
>> Thanks,
>>
>> -Stijn
>>
>> P.S:
>> This is cross-posted to 
>> http://groups.google.com/group/wiquery-plugins/browse_thread/thread/aaceac38d60adbcf
>>  because that group seems to have hardly any traffic... Hopefully one of the 
>> Wicket gurus here knows a bit about WiQuery as well? Although maybe this 
>> question can be formulated for Wicket as well as also there when doing Ajax 
>> we need to clean up after components when they are removed from the page 
>> right?
>
>
>
> --
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to