Javascript 在浏览器控制台中工作但在代码中不工作的脚本
我有一段非常简单的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因
<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(){