2013-05-29 3 views
0

J'ai travaillé pour faire du javascript dans mon application Rails toute la journée. J'ai une application Rails basique. J'essaye de faire une rangée cliquable. J'ajoute un attribut de données à la ligne pour contenir l'URL que je veux aller, mais je ne peux pas y accéder depuis la table. Voici mon HTML:Rails - Problèmes de Javascript

<% @kids.each do |kid| %> 
    <tr data-link="<%= kid_path(kid) %>"> 
     <td><%= kid.name %></td> 
     <td><%= kid.balance %></td> 
     <td><%= link_to 'Show', kid %></td> 
     <td><%= link_to 'Edit', edit_kid_path(kid) %></td> 
     <td><%= link_to 'Destroy', kid, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
    </tr> 
<% end %> 

Je javascript qui doit être appelé quand je clique sur la ligne. Voici le js:

console.log("HERE 1"); 
    $("tr").click(function() { 
    console.log("HERE 2"); 
    }) 

ICI 1 est appelé, mais ICI 2 ne l'est pas. Pourquoi cela arriverait-il? Merci pour l'aide.

+0

Est-ce que window.location est définie? Que signifierait une alerte (this.data ("link")); 'juste avant l'assignation? – lurker

+0

Je montrais juste que le code était réellement touché. Rien d'autre. – jhamm

+0

J'ai compris. Je suggère d'obtenir plus d'informations à ce stade, sauf si vous êtes sûr que c'est la valeur de la façon dont vous vous attendez. – lurker

Répondre

0

Je ne sais pas ce qui a causé le problème, mais je connais un correctif pour cela. Si vous enveloppez votre fonction js dans un fichier jQuery .ready, tout fonctionne comme prévu. Par exemple:

$('document').ready(function() { 
    $("tr").click(function() { 
    console.log("HERE 2"); 
    }); 
}); 

Je ne sais pas pourquoi cela est nécessaire, mais c'est une solution.