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

时间:2015-11-27 09:19:33

标签: javascript jquery jquery-plugins

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

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

因为它在控制台中运行,所以我知道: 1)".hopscotch-close"没问题; 2)代码中没有可能阻止其运行的错误;

此外: 1)因为是一个“点击”事件我知道我没有准备好DOM(我可以放在任何地方 - 但在这种情况下,在<body>的底部; 2)我知道我没有问题,因为对于一个类使用相同的名称而不是存在的其他名称; 3)Safari和Firefox中的行为相同,因此它不是浏览器问题。

我知道如果没有完整的代码,这很难,但如果有人经历过,那么可能对这可能是什么问题一无所知。

1 个答案:

答案 0 :(得分: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(){   Mage::getModel('scarletred_packingslips/order_fauxShipment')   这提高了网站的性能。