繁体   English   中英

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

[英]Rendering a partial view. Javascript files dont apply to that rendered view?

我正在使用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开发人员)的新手。 谢谢

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

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

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

要甚至为页面上尚未存在的元素附加事件处理程序,请阅读on方法的文档(具体来说,该方法曾经属于live方法)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM