2015-11-27 52 views
0

我有一个非常简单的一块JavaScript代码的,只是应该工作,当我在浏览器控制台中运行它,它仅适用:脚本,在浏览器控制台工作,但不是当代码

<script> 
    $(".hopscotch-close").click(function() { 
     alert("Hi"); 
     Cookies.set("tourState", "closed") 
    }) 
</script> 

因为它运行在控制台我知道: 1)".hopscotch-close"是好的; 2)代码中没有可能阻止其运行的错误; 1)因为是一个“点击”事件我知道我没有准备好DOM的问题(我可以放在任何地方 - 但在这种情况下,在<body>的底部; 2)我知道我没有问题,因为使用相同的名称为一类比其他的东西存在; 3)Safari和Firefox中的行为是相同的,所以它不是浏览器问题。我知道如果没有完整的代码,这是非常困难的,但是如果有人经历过这种情况,那么对于可能是什么问题可能有没有想法。

+0

'.hopscotch-close'元素被动态追加? –

+0

在绑定点击处理程序之前检查'$(“。hopscotch-close”).length',如果它是0,你知道你没有所需的元素 – drys

+0

@GuruprasadRao是的,它是,我认为你是对的...(请参阅下面的评论) –

回答

0

从你的意见,我感觉到了element是越来越附加dynamically所以不是

$(".hopscotch-close").on('click', 

你需要使用的event-delegation作为

$(document).on('click','.hopscotch-close',function(){ 

这将这样的伎俩。

如果要追加.hopscotch-close到任何现有的静态 element然后代替$(document).on('click'可以使用 $('#yourStaticElementId').on('click','.hopscotch-close',function(){ 从而提高网站性能。

相关问题