为什么这个jQuery点击功能不起作用?

时间:2013-09-03 22:12:46

标签: javascript jquery onclick click onclicklistener

代码:

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $("#clicker").click(function () {
        alert("Hello!");
        $(".hide_div").hide();
    });
</script>

上述代码不起作用。当我点击#clicker时,它不会发出警报,也不会隐藏。我检查了控制台,没有错误。我还检查了JQuery是否正在加载,确实是。所以不确定问题是什么。我还做了一个带有警报的文件就绪功能,这样做不能确定我做错了什么。请帮忙。谢谢!

9 个答案:

答案 0 :(得分:160)

您应该在$(document).ready(function() {});块中添加javascript代码。

$(document).ready(function() {
  $("#clicker").click(function () {
    alert("Hello!");
    $(".hide_div").hide();
  });
});

正如jQuery documentation所述:“在文档”准备好“之前,页面无法安全操作.jQuery会为您检测到这种状态。$( document ).ready()中包含的代码只会运行一次页面文档对象模型(DOM)已准备好让JavaScript代码执行“

答案 1 :(得分:43)

我通过在$(文档)中使用ON找到了解决此问题的最佳解决方案。

 $(document).on('click', '#yourid', function() { alert("hello"); });

用于id开头,见下文:

$(document).on('click', 'div[id^="start"]', function() {
alert ('hello'); });

最后一周后我不需要添加onclick triger。 我希望这能帮助很多人

答案 2 :(得分:21)

您的代码可以在没有document.ready()的情况下工作,只需确保您的脚本位于#clicker之后。查看此演示:http://jsbin.com/aPAsaZo/1/

准备概念中的想法。如果您确定您的脚本是页面中的最新内容,或者它位于受影响的元素之后,它将起作用。

<!DOCTYPE html>
<html>
<head>


<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
  <script src="https://code.jquery.com/jquery-latest.min.js"
        type="text/javascript"></script>
  <a href="#" id="clicker" value="Click Me!" >Click Me</a>
  <script type="text/javascript">

        $("#clicker").click(function () {
            alert("Hello!");
            $(".hide_div").hide();

        });


</script>

</body>
</html>

<强>注意:演示中,在代码中使用http替换https,或使用此变体Demo

答案 3 :(得分:6)

你必须用$(document).ready(function(){});包装你的Javascript代码看看JSfiddle

JS代码:

$(document).ready(function() {

    $("#clicker").click(function () {
        alert("Hello!");
        $(".hide_div").hide();    
    });
});

答案 4 :(得分:5)

尝试将$(document).ready(function(){添加到脚本的开头,然后});。另外,div是否正确地包含了id,即作为id,而不是类等?

答案 5 :(得分:3)

确保按钮上没有任何内容(例如div或trasparent img),不要点击按钮。 这听起来很愚蠢,但有时我们认为jQuery不起作用而且所有这些东西都存在,而问题在于DOM元素的定位。

答案 6 :(得分:3)

您可以使用在文档准备好执行该块内的代码时执行的$(function(){ // code });

$(function(){
    $('#clicker').click(function(){
        alert('hey');
        $('.hide_div').hide();
    });
});

答案 7 :(得分:2)

只需快速检查一下,如果你使用的是客户端模板引擎,比如把手,你的js将在document.ready之后加载,因此没有元素可以将事件绑定到,因此要么使用onclick处理程序,要么使用它在身体上并检查当前目标

答案 8 :(得分:0)

正确的浏览器重新加载

如果您单独保存 js 文件,也只需快速检查一下:确保正确重新加载您的资源。浏览器通常会缓存文件,因此只需确保您加载的资源中更正了以前的拼写错误。

有关在 Chrome/Chromium 中永久禁用缓存的信息,请参阅 this answer。否则,您通常可以使用 Ctrl+F5Shift+F5 强制完全重新加载,如{{3 }}。