2013-08-02 67 views
2

http://www.henrybuilt.com/trade2/resource.php?id=100jquery代码没有从脚本执行,但从开发面板执行

查看上面的链接。登录:asdf,asdf

编辑:点击竹上的链接上面一旦你已经登录。谢谢。

下面的代码(用于切换'popup'窗口(div))不会在页面上执行,但在复制并粘贴到开发面板时可以使用。

  $(".maintypedata img").click(function() { 
       console.log("test"); 
       if(open == false) { 
        var src = $(this).attr("src"); 
        $(".popup").html("<img src='"+src+"'/>"); 
        open = true; 
        $(this).addClass("selected"); 
        $(".popup").slideFadeToggle(function() { 

        }); 
       } 
      }); 

如何让它从脚本运行?

+0

您是否尝试过把它在一个文档准备好处理程序或脚本块在身体的尽头?您需要该代码才能运行_after_问题中的元素已被解析。 (而且,nitpick:该代码不会切换窗口,它会分配一个点击处理程序,只有当您随后单击发生切换的img元素时才会发生。)顺便说一句,我去了您链接到的网站并没有看到任何图像点击。如果您希望我们在外部网站尝试一些内容,请提供完整的说明。 – nnnnnn

+0

将它放在正文末尾的脚本标记 –

+0

@nnnnnn - 编辑。我已经尝试过这些东西。 – maxhud

回答

1

您所显示的点击处理程序绑定到代码运行时存在的任何".maintypedata img"元素但是,单击“Bamboo”选项后,所讨论的img元素会被动态地附加到文档中。所以,你需要或者运行.click()代码之后的元素被添加(这是你被从控制台运行它做什么)或改变其作为委派事件处理工作:

 $(".maintypedata").on("click", "img", function() { 
      console.log("test"); 
      if(open == false) { 
       var src = $(this).attr("src"); 
       $(".popup").html("<img src='"+src+"'/>"); 
       open = true; 
       $(this).addClass("selected"); 
       $(".popup").slideFadeToggle(function() { 

       }); 
      } 
     }); 

也就是说,绑定最初存在的元素的点击处理程序,在这种情况下为".maintypedata",但在第二个参数中指定一个选择器到.on(),如果点击的项目与事件发生时的第二个选择相匹配,jQuery将只运行您的处理程序。

(委托的处理程序也比结合相同的处理程序,以大量的独立元素的更高效,但是这只是一个额外的好处。)

+0

完美的谢谢。 – maxhud

+0

不客气。请注意,我编辑了我的答案以更改'$(document).on(“click”,“.maintypedata img”,''为$(“。maintypedata”)。on(“click”,“img”,..因为将处理程序绑定到当时存在的最低级别父元素会更高效。 – nnnnnn