JavaScript自定义事件,动态添加属性

根据事件的不同,可用的自定义方法也不同。

document.createEvent(‘Event‘);

实现主要有4个步骤:

1.创建事件。

2.初始化事件(三个参数:事件名,是否起泡,是否取消默认触发)

3.监听事件

4.触发事件

 var Evt = document.createEvent(‘Event‘);//创建一个事件
 Evt.initEvent(‘inputChangeEvt‘, true, true);//初始化事件,给定事件名字
window.addEventListener(‘Evt‘, function (event) {//监听这个自定义事件动没动
        console.log(event);
    });
window.dispatchEvent(Evt);//触发自定义inputChangeEvt事件

具体实现。

<!DOCTYPE html>
<html>
<head>
    <meta charset=utf-8" />
    <title>By:DragonDean</title>
    <script type="application/javascript">
        window.onload=function(){
            var evt=document.createEvent(‘Event‘);
            evt.initEvent(‘myEvent‘,true,true);
            var obj=document.getElementById(‘testBox‘);
            obj.addEventListener(‘myEvent‘, function(){
                console.log(‘myEvent 事件触发了‘);
            }, false);
            obj.dispatchEvent(evt);
        };
    </script></head>
<body>
<div id="testBox">ddddd</div>
</body>
</html>

当然,自定义事件是的场景肯定不是这么简单,工作中刚好需要做一个自定义事件,用于我如果发生数据改变,就将数据发送给其它js。其中牵扯到动态添加属性,事件传值等。

/**
 * Created by v_zweiwang on 2015/10/26.
 */
window.onload = function () {
    window.addEventListener(‘inputChange‘, function (event) {//监听这个自定义事件动没动
        console.log(event.detail);
    });
    myBord.init();//使用
};
(function(){
    window[‘myBord‘] = {};
    function init() {
        myBord.inputChangeEvt = document.createEvent(‘Event‘);//创建一个事件
        myBord.inputChangeEvt.initEvent(‘inputChange‘, true, true);//初始化事件,给定事件名字
        //初始化一下数据
        myBord.inputChangeEvt.detail = {
            TranslateX: ‘0.00‘,
            TranslateY: ‘0.00‘,
            TranslateZ: ‘0.00‘,
            RotateX: ‘0.00‘,
            RotateY: ‘0.00‘,
            RotateZ: ‘0.00‘,
            Scale: ‘1.00‘
        };
        try {
            window.dispatchEvent(myBord.inputChangeEvt);//触发自定义inputChangeEvt事件
        } catch (e) {
            console.error(e);
        }
    }
    window[‘myBord‘][‘init‘] = init;
})();

至此,已经可以利用事件传值了。直接将以上代码复制到html中,运行,键盘F12,就能看到以下输出。

好,现在来讲讲实现。

(解释代码)

如何动态添加属性。

如何利用事件传递值。

时间: 2024-10-04 11:37:49

JavaScript自定义事件,动态添加属性的相关文章

04JS高级动态添加属性和删除属性

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script type ="text/javascrip

JavaScript自定义事件 - createEvent()、initEvent()和dispachEvent()

参考资料: MDN - Document.createEvent():https://developer.mozilla.org/zh-CN/docs/Web/API/Document/createEvent MDN - Event.initEvent():https://developer.mozilla.org/zh-CN/docs/Web/API/Event/initEvent MDN - 创建和触发events:https://developer.mozilla.org/zh-CN/do

JavaScript 自定义事件

Javascript事件模型系列(四)我所理解的javascript自定义事件 漫谈js自定义事件.DOM/伪DOM自定义事件

如何遍历json属性和动态添加属性

var person= { name: 'zhangsan', pass: '123' , 'sni.ni' : 'sss', hello:function (){ for(var i=0;i<arguments.length;i++){ //在不知参数个数情况下可通过for循环遍历 // arguments这个是js 默认提供 alert("arr["+i+"]="+arguments[i]); } } } //遍历属性 for(var item in pe

Runtime(动态添加属性)

下面通过一个实例展示一下Runtime(动态添加属性)的用法

runtime动态添加属性

<span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19.5px; background-color: rgb(254, 254, 242);">使用运行时库,必须要先引入 objc/runtime.h</span> <span style="font-family: Verdana, Arial, Helve

Python3动态添加属性,删除属性,判断属性函数

动态添加属性是指在类的外面给对象动态绑定属性,添加的方法有两种:1.直接绑定到对象上,例如:p.name="Tom"2.使用setattr函数:setattr(p,'name','Tom')判断对象是否拥有某个属性:hasattr(p,'name'),返回布尔值:也可以用来判断对象是否拥有某个方法删除某个属性:del关键字:del p.namedelattr函数:delattr(p,'name') 原文地址:https://blog.51cto.com/13560219/2479011

JS内置对象的原型不能重定义?只能动态添加属性或方法?

昨天马上就快下班了,坐在我对面的同事突然问我一个问题,我说“爱过”,哈哈,开个玩笑.情况是这样的,他发现JS的内置对象的原型好像不能通过字面量对象的形式进行覆盖, 只能动态的为内置对象的原型添加属性或方法,下面那个具体的例子说明: var arr=[]; Array.prototype={ push:function(){ alert("1"); } }; arr.push(); //没有任何输出 有人可能会说了“你先定义的arr,后来又修改了Array.prototype,这时Arr

javascript实现的动态添加表单元素input,button等(appendChild)

写一个小系统时,需要动态添加表单元素,按自己的实现方法写了这篇教程! 我想各位在很多网站上都看到过类似的效果! 1.先用document.createElement方法创建一个input元素! 代码如下: var newInput = document.createElement("input"); 2.设定相关属性,如name,type等 代码如下: newInput.type=mytype;   newInput.name="input1"; 3.用append