If you are using turbolinks you have to re-attach all your click handlers after the page content is replace, as discussed with detecting the page change event.
Like I said, in a small app you will get away with this but in a larger app you will drown in a nightmare of page change event binding and handler attachment bugs. This is why generally Javascript developers I know stay away from this style of coding and prefer a more robust think-client approach like the ones I mentioned. Obviously, detecting a change event may just be a small fix and learning a whole new way to write code is a bigger task. On Jun 18, 2014, at 11:29 AM, mike2r <[email protected]> wrote: > > > On Wednesday, June 18, 2014 2:46:29 AM UTC-4, Ruby-Forum.com User wrote: > Hello people, I'm wondering why this is not working. I have some plain > JavaScript wrote on mycontroller.js , works like a charm; I'm listening > to few events of the related view and works. I've been writing some > code, testing it manually refreshing the page in the browser and goes > ok. > The problem arise when I come to this view from another view. I have a > side-bar, when I click an <a> element it calls another action and render > another view. When I click the link which takes me to an action of > `mycontroller` controller the JavaScript work doesn't work, doesn't get > executed. Why is this? > I'm listening to the events by: > > window.onload = function() { > document.getElementById('my_element').onclick = function() { > // do stuff... > } > > // another listen... > } > > I'm wondering if I should use another event more than window.onload , > perhaps that doesn't get triggered when I come to this specific view > from an <a> HTML element. Do you have any clue about what's happening? > Thanks for your time, I appreciate it. > > -- > Posted via http://www.ruby-forum.com/. > > It's hard to say, you would need to follow it in a browser that has tools for > that such as firebug in Firefox. Chrome and Safari also have good developer > tools. My guess would be turbolinks. If you are using Rails 4, turbolinks > is installed by default. Turbolinks regenerates the page's content without > loading a new page. Therefore, document.ready and window.onload aren't > triggered. You need to use one of turbolink's events, such as page:change. > See documentation at the following: > > https://github.com/rails/turbolinks > > If that's not it, I would need more information. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" 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]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rubyonrails-talk/6cc19be5-9f6c-4352-9614-314a50cda712%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" 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]. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/5ED7C1FA-D64B-4246-AB2B-D37A4D88B7CB%40datatravels.com. For more options, visit https://groups.google.com/d/optout.

