首页 > 编程知识 正文

原生js触发click(原生js触发click事件)

时间:2023-11-29 19:40:50 阅读:310485 作者:WCPA

本文目录一览:

  • 1、原声js怎么触发click事件
  • 2、如何用JS来点击按钮
  • 3、如何用原生js或jq触发angularjs中ng-click绑定的事件

原声js怎么触发click事件

如果你只需要触发那些常见的事件,比如说鼠标点击,并且不考虑跨浏览器兼容的问题的话,只需要这样做:

document.getElementById('myLink').click()

当然这么做的兼容性并不好,比如说 FireFox 就不干。另外 onclick() 这样的方法只能用于在 HTML 中的内联写法。

如果事情稍微复杂一些,比如说你要触发一些自定义的事件,那么你必须要理解 DOM 里面的“事件对象模型”,本质上 $.trigger() 就是对这些概念的封装。不过问题是 DOM 的一致性和兼容性一直都不太好,所以关于事件的对象模型长期以来都处于一个比较混乱的状况下,如果不用 jQuery 的话,想找到一个既简单又足够健壮的解决方案并不容易。

很长时间以来,人们都是这样做的:

// 创建一个事件对象,就好像你绑定事件回调函数里获得的那个事件对象一样

var myEvent = document.createEvent('Event')

// 初始化这个事件对象,为它提高需要的“特性”

myEvent.initEvent('myEventName', true, true)

// 按照常见的方式绑定对该事件的监听,这里的 element 可以是任何一个元素,你懂的

element.addEventListener('myEventName', function(evt) {

// 这里,evt 就是你创建的事件对象了,不过它会更丰富一些——这些是浏览器为你做的

})

// 然后这样触发它

element.dispatchEvent(myEvent)

你必须要去阅读 createEvent initEvent dispatchEvent 这些方法的文档来完整认识它们(文档可以去 MDN 找),上面介绍的只是基本用法。$.trigger() 所封装的也就是它们(及其相关的兼容性处理等等)。不过这些方法已经有点“过时”了,特别像 initEvent 这样的方法更是已经被(新的 DOM 标准)废弃了。

以下是更“现代”的做法,不过老样子:兼容性会是问题:

var myEvent = new Event('myEventName')

element.dispatchEvent(myEvent)

绑定回调是一样的我就不重复了。另外“现代”的做法里触发内建事件要用对应的接口,比如说:

var event = new MouseEvent('click', {

'view': window,

'bubbles': true,

'cancelable': true

});

如何用JS来点击按钮

原理

用JS来点击按钮需要分2步,第一步是选中按钮的元素,第二步是使用元素自带的click函数。

例如接下来我将要演示的例子中,仅用

document.getElementById("btn").click()

一行就可以控制按钮点击。

其中document.getElementById("btn")是根究id获取按钮的元素,click()是使按钮被点击一次。

演示

这是我为此问题专门写的在线演示页面点击按钮演示页面。

页面结构如图

首先点击右下角打开控制台

然后输入

document.getElementById("btn").click()

这行代码

按回车运行代码即可弹出一行提示,说明按钮被点击。你可以用鼠标点击一下按钮,也是这个效果。

如何用原生js或jq触发angularjs中ng-click绑定的事件

在 angular 项目开发中 不建议这么弄,当然 如果有些引入的库 只能这样触发的话,还是有办法解决的。

首先在 控制器外侧,也就是js 的最外侧定义一个变量, 然后在当前控制器中 给该变量赋值为一个函数,该函数调用 控制器中 ng-click 之前绑定的回调函数 定义的这个函数使用onclick调用即可     比如:

button ng-click="method_angular()"test/button  

button id="btn" onclick="method()"test/button

// 第一个按钮 是使用ng-click执行

// 第二个按钮是 使用onclick 执行

// 也可以使用jquery 给button 绑定事件执行

var method 

app.controller("testRoute",["$scope",function($scope){

    $scope.method_angular = function(){

        console.log(111)

    }

    method = function (){

        $scope.method_angular()

    }

    $("#btn").click(function(){

        $scope.method_angular()

    })

})

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。