Hah!
I was close, but needed a few changes.
Firstly I had to use the newer (jQuery 1.7+) ".on()" event handler:
$('#div-permanent-image-controls').on('contentchanged',
'#div-image-controls', function(){ alert('do stuff'); })
Secondly, I discovered I had to attach the event handler to DOM element
that was *always* on the page (e.g. a parent element of
<div-image-controls>). I hadn't realized that as soon as ajax refreshes the
<div-image-controls> element, its event handler disappears! So, I needed to
use a "delegated event" as described in jQuery's
.on<http://api.jquery.com/on/>documentation, attaching the handler to an
encompassing parent element (and
larger div).
So my divs:
<div id="div-permanent-image-controls">
<div part="div-image-controls">
... stuff in the div to be updated ...
</div>
</div>
My handler:
jQuery(document).ready(
function() {
$('#div-permanent-image-controls').on('contentchanged',
'#div-image-controls', function(){ alert('do stuff'); })
}
);
And the call from the controller's web_method:
hobo_ajax_response( :postamble =>
"$('#div-image-controls').trigger('contentchanged');" )
Tim
On Sunday, December 15, 2013 9:47:28 AM UTC-5, Tim Griffin wrote:
>
> Yep, always happens. Shortly after posting, I realized I could do this:
>
> hobo_ajax_response( :postamble => ";
> $('#div-image-controls').trigger('contentchanged');" )
>
> Tim
>
>
> On Sunday, December 15, 2013 9:15:25 AM UTC-5, Tim Griffin wrote:
>>
>> Hi all;
>>
>> I'm just looking for any suggestions before I do my over override of
>> hobo_ajax_response.
>>
>> On a page, I have a <DIV> element that gets updated by a web_method. I'd
>> like to trigger a javascript function when the content of that DIV changes.
>> a DIV element doesn't support a built-in changed event, but I can bind my
>> own and then trigger it when needed:
>>
>> $('#div-image-controls').bind('contentchanged', function() {
>> // do something when the div content has changed
>> });
>>
>> From my web_method, I need to trigger this 'contentchanged' event at the
>> time that hobo_ajax_response is being prepared.
>>
>> I thought about passing my own JS to hobo_ajax_response and simply
>> tacking it onto the 'page' string created by hobo_ajax_response:
>>
>> /hobo/lib/hobo/controller.rb:96
>> page << "#{function}(#{dom_id.to_json}, #{part_content.to_json})\n"
>>
>> This isn't optimal, since it means I have javascript code within my
>> controller's web_method, and I'm overriding a core Hobo method.
>>
>> Is there an easier way that I can't see?
>>
>> Many thanks,
>> Tim
>>
>>
>>
--
You received this message because you are subscribed to the Google Groups "Hobo
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/hobousers.
For more options, visit https://groups.google.com/groups/opt_out.