JS如何阻止事件

JavaScript024

JS如何阻止事件,第1张

把 var timeTask = ... 前面的var去掉,使 timeTask 成为全局变量。

然后在 alert("智能闹钟已关闭")的前面插入一行:clearInterval(timeTask)

1.

event.preventDefault()

--

阻止元素的默认事件。

注:a元素的点击跳转的默认事件

button,radio等表单元素的默认事件

div

元素没有默认事件

例:

复制代码

代码如下:

<a

href="http://www.baidu.com"

target="_black">百度</a>

复制代码

代码如下:

var

samp

=

document.getElementByTagName("a")

samp.addEventListener("click",function(e){e.preventDefault()},false)

解释:点击链接的时候正常情况下会发生跳转,但是现在我们阻止了它的默认事件,即跳转事件,这时就不会跳转到百度了。

2.

event.stopPropagation()

--

阻止元素冒泡事件

注:嵌套元素一般都存在冒泡事件,会带来某些影响

例:

复制代码

代码如下:

<div

id="c1"

onclick="alert(1)">

<div

id="c2"

onlick="alert(2)">

<input

type="button"

id="c3"

value="点击"

onclick="alert(3)">

</div>

</div>

这里点击button的时候,浏览器会先后弹出3,2,1,本来只想让绑定在button上的事件发生,却无意中触发了它的两个父级上的事件,这里我们只是做了一个简单测试,试想如果在项目开发中,某个按钮和他的父级同时绑定了很重要的事件,那么结果会惨不忍睹。这时的处理方法就是阻止冒泡事件。

给input注册click事件,同时阻止它的冒泡事件

复制代码

代码如下:

document.getElementById('c3').addEventListener('click',function(e){e.stopPropagation()},false)

OK!!!了

js/jquery 禁用点击事件

工作中遇到这种情况:验证邮箱页面的重新发送需要在3分钟后才可以点击重新发送,所以在这之前需要禁用他的点击

网上查了后有一下几种实现方法

1.css禁用鼠标点击事件

.disabled { pointer-events: none}

注:(这个没有试过)

jquery禁用a标签方法1

01$(document).ready(function () {

02$("a").each(function () {

03var textValue = $(this).html()

04if (textValue == "XX概况" || textValue == "服务导航") {

05$(this).css("cursor", "default")

06$(this).attr('href', '#')//修改<a>的 href属性值为 # 这样状态栏不会显示链接地址

07$(this).click(function (event) {

08event.preventDefault() // 如果<a>定义了 target="_blank“ 需要这句来阻止打开新页面

09})

10}

11})

12})

jquery禁用a标签方法2

1$('a.tooltip').live('click', function(event) {

2 alert("抱歉,已停用!")

3 event.preventDefault()

4})

jquery禁用a标签方法3

1$(function(){

2$('.disableCss').removeAttr('href')//去掉a标签中的href属性

3$('.disableCss').removeAttr('onclick')//去掉a标签中的onclick事件

4})

jquery控制按钮的禁用与启用

控制按钮为禁用:

1$('#button').attr('disabled',"true")添加disabled属性

2$('#button').removeAttr("disabled")移除disabled属性

live() 方法为被选元素附加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。

通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素)。

问题:使用jQuery的live()方法绑定事件,有时会出现重复绑定的情况,如,当点击一个按钮时,此按钮所绑定的事件会并执行n遍。

解决:使用die()方法,在live()方法绑定前,将此元素上的前面被绑定的事件统统解除,然后再通过live()方法绑定新的事件。

Js代码

//先通过die()方法解除,再通过live()绑定

$("#selectAll").die().live("click",function(){

//事件运行代码

})

//先通过die()方法解除,再通过live()绑定

$("#selectAll").die().live("click",function(){

//事件运行代码

})die()方法简介: