2017-09-25 66 views
0

我是新来的JavaScript,我试图尽可能多的调试,但我仍然无法确定为什么我不能获得警报“事件1”,以显示当我点击文字:不能得到最基本的点击事件绑定工作

<!DOCTYPE html> 
<html> 

    <head> 
    <title>Title</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
    </head> 
    <script type="text/javascript" language="javascript"> 


    $("#id").bind("click", function() { 
     alert("Event 1"); 
    }); 

    </script> 

    <body> 
    <div class="foo" id="id">Click</div> 
    </body> 
</html> 
+0

'$(“#id”)。click(function(e){...}' – nilobarp

+0

@nilobarp无关 – hobbs

回答

2

的问题是,你需要确保你只有一次在页面加载绑定到元素,该元素是因此访问。这可以通过将现有的jQuery包装在$(document).ready()中完成,如下面的工作示例所示。

另外,还要注意.bind()已被弃用的jQuery 3.0,你应该使用.on()代替。请注意,您.on目标元素必须在您拨打电话给他们的时间存在:

事件处理程序只能绑定到当前选择的元素;他们必须在当时存在您的代码调用。对()

如果目标元素是在页面加载DOM不可见,你可以使用event delegation绑定到一个元素可见页面加载,然后委托该功能的目标。

<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <title>Title</title> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
</head> 
 
<script type="text/javascript" language="javascript"> 
 
    $(document).ready(function() { 
 
    $("#id").on("click", function() { 
 
     alert("Event 1"); 
 
    }); 
 
    }); 
 
</script> 
 

 
<body> 
 
    <div class="foo" id="id">Click</div> 
 
</body> 
 

 
</html>

希望这有助于! :)

+0

从jQuery 3.0开始,.bind()已被弃用。 .on()方法将事件处理程序附加到文档,因为jQuery 1.7 – nilobarp

+0

是的;我刚刚更新了我的回答,提到这一点,并推荐使用'.on()'而不是:) –