Javascript 在浏览器控制台中工作但在代码中不工作的脚本

Javascript 在浏览器控制台中工作但在代码中不工作的脚本,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我有一段非常简单的javascript代码,它应该可以工作,并且只有在浏览器控制台中运行时才能工作: <script> $(".hopscotch-close").click(function () { alert("Hi"); Cookies.set("tourState", "closed") }) </script> 因为它在控制台中运行,我知道: 1.跳房子关闭正常; 2代码中没有可能阻止其运行的错误 此外: 1因

我有一段非常简单的javascript代码,它应该可以工作,并且只有在浏览器控制台中运行时才能工作:

<script>
    $(".hopscotch-close").click(function () {
        alert("Hi");
        Cookies.set("tourState", "closed")
    })
</script>
因为它在控制台中运行,我知道: 1.跳房子关闭正常; 2代码中没有可能阻止其运行的错误

此外: 1因为这是一个点击事件,我知道DOM准备就绪没有问题,我可以把它放在任何地方——但在本例中,放在事件的底部; 2我知道我没有问题,因为我对一个类使用了与其他类相同的名称; 3 Safari和Firefox中的行为是相同的,因此这不是浏览器问题


我知道如果没有完整的代码,这是很困难的,但是如果有人经历过这种情况,可能对可能出现的问题一无所知。

从您的评论中,我感觉到元素是动态附加的,所以不是

$(".hopscotch-close").on('click',
你需要利用as

那就行了

如果您正在附加。跳房子靠近任何已经存在的静态 元素,而不是$document。单击可使用 $'yourStaticElementId'。在“单击”时,'.hopsocch close',函数{ 这将提高站点性能


.hopscotch-close元素被动态追加?在绑定单击处理程序之前,请检查$.hopscotch-close.length,如果为0,则表示您没有所需的element@GuruprasadRao是的,我认为你是对的……请看评论below@drys你完全正确!它是0。所以我把我的代码包装在一个setTimeout中进行检查,然后恩,它是1!如果跳房子图书馆不允许我用回调来包装这个,有没有其他方法来代替setTimeout?@drys我会接受GuruprasadRao的回答,但我会跟着你,这样我就可以投票给你的anwsers了,因为你应该在这里获得巨大的荣誉。非常感谢你!
$(document).on('click','.hopscotch-close',function(){