What exactly (please paste code examples) by "comes to this view from another 
view" ?

If the page is reloaded check to make sure your onload handler is re-attached 
correctly (you can do this with simple debugging or console statements inside 
of your onload function)

If you have some kind of ajax setup (like some of the default Rails stuff), 
then parts of the page might be getting replaced with new HTML content (Like 
your my_element). When that happens, the HTML is replaced and the new html 
elements do not have the click handler attached to them (and your onload is not 
re-run).

To keep things the way they are, try using jQuery 's on method 
(http://api.jquery.com/on/), which you should attached to a parent of the 
object that is getting replaced by ajax -- not the actual link itself.

Better yet, think about learning Backbone, Ember, or Angular. The way you are 
working with Javascript works OK in very tiny apps, but breaks down quickly in 
larger apps with a lot of client-side interactivity. Personally, I haven't 
written javascript in the style you are writing it (big, global class-bsaed 
targets that attach click handlers during the window's onload) since about 2009.

-Jason



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/A789BF7C-CB85-4E95-96CC-E6D3C9981425%40datatravels.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to