jquery代码不是从脚本执行,而是从开发面板执行

时间:2013-08-02 21:50:12

标签: javascript jquery

http://www.henrybuilt.com/trade2/resource.php?id=100

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

编辑:登录后点击上面链接上的竹子。谢谢。

以下代码(切换'弹出'窗口(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() { 

                    });
                }
            });

如何从脚本中运行它?

1 个答案:

答案 0 :(得分:1)

您显示的点击处理程序绑定到代码运行时存在的任何".maintypedata img"元素。但是,有问题的img元素会在“之后”动态地附加到文档中单击Bamboo“选项。因此,您需要在附加元素后运行.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() { 

                });
            }
        });

也就是说,将click处理程序绑定到最初存在的元素,在本例中为".maintypedata",但是在.on()的第二个参数中指定一个选择器,jQuery只会在单击时运行您的处理程序item匹配事件发生时的第二个选择。

(委托处理程序也比将相同的处理程序绑定到许多单独的元素更有效,但这只是一个额外的好处。)