渲染局部视图。 Javascript文件不适用于该渲染视图?

时间:2011-12-28 18:51:09

标签: javascript html node.js partial-views renderpartial

我正在使用nodejs。并从javascript文件中调用以下内容:

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

然后我将它初始化为数据表但是在数据表上定义的所有函数(如doubleclick)都不起作用。如果我将双击的代码复制到控制台中就可以了。

我做错了什么?

编辑:更多信息。所以我现在拥有的是当用户登录时,使用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?我是node(和web dev)的新手。感谢

1 个答案:

答案 0 :(得分:1)

click事件处理程序仅在调用.user-playlist时应用于与$(".user-playlist")匹配的元素集。要查看这些元素,请打开Web检查器(或Firebug),并在帖子中包含的JavaScript代码段之前添加此行:

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

您应该在页面上看到一个空数组,其中从Ajax加载播放列表,并在完全刷新后在页面上看到至少一个项目。

要为事件处理程序附加尚未在页面上的元素,请阅读on方法的文档(特别是以前属于live方法的功能)。 / p>