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

时间:2015-08-11 15:33:25

标签: javascript jquery html

这是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>

当我点击input时,alert没有弹出。但是当我把

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

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

6 个答案:

答案 0 :(得分:15)

我认为您不能立即嵌入> [1; -2; 3] |> replaceNegatives;; val it : int list = [1; 0; 3] > [1; -2; 3] |> isCorrupt;; val it : bool = true > [1; 2; 3] |> replaceNegatives;; val it : int list = [1; 2; 3] > [1; 2; 3] |> isCorrupt;; val it : bool = false 块中的事件声明。尝试将代码更改为以下内容:

$(document).ready...

或简写为:

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

答案 1 :(得分:11)

您必须通过ready 功能

您正在将调用的返回值传递给.click()。因此,绑定点击处理程序的尝试会立即发生(并且因为元素还没有在DOM中失败),ready函数会忽略您传递给它的值(因为它不是&#39; ta功能)。

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

但是当我在</body>之前放右时,它就有用了。

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

答案 2 :(得分:4)

该脚本应该如下所示:

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

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

答案 3 :(得分:3)

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

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

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

答案 4 :(得分:0)

如果您想在就绪功能之外调用此功能,可以尝试这样的

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

{

alert ('called');

}) ;

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

答案 5 :(得分:-2)

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