繁体   English   中英

$(document).ready()不起作用

[英]$(document).ready() doesn't work

这是html代码:

<!doctype html>
<html>
<head>
    <title>title</title>
    <meta charset="utf-8">
    <script src="vendor/jquery.js"></script>
    <script>
        $(document).ready($(".voice").click(function() {
            alert("succeed");
        }));
    </script>
</head>
<body>
    <div class="container">
        <div class="voice-div">
            <input type="text" class = "voice" />
        </div>
    </div>
    </div><!-- close class="wrapper" -->

    <!-- the support button on the top right -->
</body>
</html>

当我点击inputalert没有弹出。 但是当我放

<script>
    $(document).ready($(".voice").click(function() {
        alert("succeed");
    }));
</script>

就在</body>之前,它起作用了。 为什么? 如果我想将脚本放在<head>...</head>部分,我应该如何修改代码?

我认为您不能立即嵌入$(document).ready...块中的事件声明。 尝试将代码更改为以下内容:

$(document).ready(function () {
    $(".voice").click(function() {
        alert("succeed");
    });
});

或简写为:

$(function () {
    $(".voice").click(function() {
        alert("succeed");
    });
});

你必须ready一个功能

您正在向它传递调用.click()的返回值。 因此,绑定单击处理程序的尝试立即发生(并且由于元素尚未在DOM中而失败)并且ready函数忽略了传递给它的值(因为这不是函数)。

$(document).ready(
    function () {
        $(".voice").click(
            function() {
                alert("succeed");
            }
        );
    }
);

但是当我把它放在</body>之前时,它起作用了。

这是因为元素存在于那一点。 ready事件绑定仍然失败,但是您传递的表达式首先成功绑定了click事件。

该脚本应该如下所示:

$(document).ready(function() {
    $(".voice").click(function() {
        alert("succeed");
    });
});

它是关于添加回调,函数'对象'。 您正在做的是在脚本加载时立即调用函数(单击然后发出警报),并将结果(如果有)作为参数传递。

原因是,你没有以正确的方式编码。 将代码更改为:

<script>
$(document).ready(function() {
    $(".voice").click(function(){
       alert("succeed");
    });
});
</script>

在你的代码中,你已经把: $(".voice").click里面准备作为参数,这就是为什么javascript立即执行它而不是在document.ready上,所以它将在body标签之后但不在它之前。

如果你想在就绪功能之外调用它,你可以试试这样的东西

$(document).on("click",".voice",function()

{

alert ('called');

}) ;

在这种情况下,当您在ajax成功后应用具有此类名称的新元素时,您仍然可以在ajax请求之后使用它。

<script>
    $(document).ready(function() {
        $(".voice").click(function() {
            alert("succeed");
        });
    });
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM