2016-12-06 4 views
0

На моем приложении рельсов я в состоянии иметь ряд на стол Clickable на ссылку, используя код: приложения/активы/JavaScripts/custom.js:JQuery перестает работать после навигации других страниц

var main = function() { 
    $("#my_table tr").on('click', function() { 
    window.location = $(this).data("link") 
    }); 
}; 
$(document).ready(main); 

HTML:

<table class="table" id="my_table"> 
    <thead>...</thead> 
    <tbody> 
     <tr data-link= "<%= my_path(myobject) %>"> 
     <td><%= myobject.name %></td> 
     <td><%= myobject.email %></td> 
    </tbody> 
</table> 

Однако после посещения другой страницы и вернуться на страницу с таблицей, строки больше не кликабельны. Он работает только в том случае, если я обновляю браузер. Что мне нужно сделать, чтобы функциональность не прекращалась после переключения страниц?

+0

использование некогда живой функции –

+0

@navnit '$ (" #my_table tr ") .one (" click ", fu nction() {'не работает ни – amo

ответ

0

Это может быть связан с турбо-ссылкой, я испытал много quarky ошибок Js с использованием Turbolinks с Rails 5.

Try:

$(document).on('turbolinks:load', function() { 
    // your code 
} 

Вместо

$(document).ready(main) 

Надеется, что это помогает

0

У вас на самом деле есть data-link="http://domain.com/path" в ваших элементах TR? Вы не поставили, как TR выглядит ...

Для перенаправления для имитации щелчка по ссылке вы можете использовать:

window.location.href = $(this).data("link") 

Надеются, что это помогает!

+0

Я добавил путь' data-link = "' 'в' ' – amo

+0

Отлично! но, похоже, это больше проблема с Rails и Turbolinks .. – QuarK

0

Я думаю, что Navnit Мишра имел в виду не использует $("#my_table tr").one("click", function() { как обработчик события, но с использованием

$("#my_table tr").live("click", function() {(your_event)}) 

для обработки вашего события. .live позволяет присоединить обработчик событий для элемента в классе в будущем. details for .live in jquery доступен на сайте jquery.

Смежные вопросы