Визуализация частичного представления.Файлы Javascript не применяются к этому представлению? - PullRequest
0 голосов
/ 28 декабря 2011

Я использую nodejs. И вызывая что-то вроде следующего из файла JavaScript:

$("#right").append(resp);

Затем я инициализирую его как таблицу данных, но все функции (например, двойной щелчок), определенные в таблицах данных, не работают. Если я скопирую код для двойного клика в консоль, он сработает.

Что я делаю не так?

Редактировать: больше информации. Итак, что я имею сейчас, когда пользователь входит в систему, отображает свои списки воспроизведения на боковой панели, используя ajax. При нажатии на список воспроизведения загружаются эти списки воспроизведения. Однако код в application.js (загруженный изначально) не применяется к спискам воспроизведения, пока страница не будет полностью перезагружена.

Вот код, который у меня есть:

    $.ajax({
  type: "POST",
  url: '/login',
  data: {  email: email, password: pass },
  success: function(result) {
    $.get('/toop', function(data) {
    console.log(data);
    if (data == "fail") {
      alert("error");
    } else {
    $("#header").html(data);
    $(document).trigger('close.facebox');
    $.get('/getPlaylists' , function(playlists) {
    $("#left").html(playlists);
    });

Он просто получает плейлисты для пользователей и помещает их на боковую панель. Теперь в файле application.js у меня есть:

    $(".user-playlist").click(function(e) {
    var playlist = e.target;
    var id = $(playlist).attr('data-playlist');

. , , .

Но он обнаруживает щелчок по списку воспроизведения только при полном обновлении страницы. Просто рендеринг с использованием ajax не делает. Я делаю {layout: false} при получении нового представления. Нужно ли перезагружать application.js? Я новичок в узле (и веб-разработчика). Спасибо

1 Ответ

1 голос
/ 29 декабря 2011

Обработчик события click будет применяться только к набору элементов, которые соответствуют .user-playlist, когда вызывается $(".user-playlist").Чтобы увидеть, какие это элементы, откройте веб-инспектор (или Firebug) и добавьте эту строку непосредственно перед фрагментом JavaScript, который вы включили в ваше сообщение:

console.log($(".user-playlist"))

На странице, где находитсясписок воспроизведения загружается из Ajax, и по крайней мере один элемент на странице после полного обновления.

Чтобы прикрепить обработчик событий даже для элементов, которых еще нет на странице, прочитайте документацию по в метод (в частности, функциональность, которая раньше принадлежала live метод).

...