├── .gitignore ├── .npmignore ├── README.md ├── index.js ├── package.json └── test.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | test 2 | test.js 3 | example 4 | examples 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## dom-event 2 | 3 | Add/remove DOM events 4 | 5 | ## Install 6 | 7 | ```bash 8 | $ npm install dom-event 9 | ``` 10 | 11 | ## Usage 12 | 13 | ```js 14 | var on = require('dom-event') 15 | var off = on.off 16 | 17 | on(document.body, 'click', hello) // adds the event listener 18 | off(document.body, 'click', hello) // removes 19 | 20 | function hello () { 21 | console.log('hello!') 22 | } 23 | ``` 24 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = on; 2 | module.exports.on = on; 3 | module.exports.off = off; 4 | 5 | function on (element, event, callback, capture) { 6 | !element.addEventListener && (event = 'on' + event); 7 | (element.addEventListener || element.attachEvent).call(element, event, callback, capture); 8 | return callback; 9 | } 10 | 11 | function off (element, event, callback, capture) { 12 | !element.removeEventListener && (event = 'on' + event); 13 | (element.removeEventListener || element.detachEvent).call(element, event, callback, capture); 14 | return callback; 15 | } 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dom-event", 3 | "version": "1.0.0", 4 | "description": "Add/remove DOM events", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "browserify test.js | tape-run" 8 | }, 9 | "devDependencies": { 10 | "browserify": "13.0.0", 11 | "tape": "4.5.1", 12 | "tape-run": "2.1.3" 13 | }, 14 | "keywords": [ 15 | "dom", 16 | "event", 17 | "binding" 18 | ], 19 | "repository": { 20 | "url": "git@github.com:npm-dom/dom-event.git", 21 | "type": "git" 22 | }, 23 | "author": "Azer Koçulu ", 24 | "license": "BSD" 25 | } 26 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | var test = require("tape"); 2 | var on = require('./'); 3 | var off = on.off; 4 | var button; 5 | 6 | reset(); 7 | 8 | test('binds and unbinds a new event', function(t){ 9 | t.plan(1); 10 | 11 | on(button, 'click', callback); 12 | 13 | setTimeout(function(){ 14 | button.click(); 15 | }, 100); 16 | 17 | function callback () { 18 | off(button, 'click', callback); 19 | button.click(); 20 | t.ok(true); 21 | } 22 | }); 23 | 24 | test('IE shit', function (t) { 25 | t.plan(2); 26 | 27 | on({ attachEvent: assert }, 'click', function () {}); 28 | off({ detachEvent: assert }, 'click', function () {}); 29 | 30 | function assert (event) { 31 | t.equal(event, 'onclick'); 32 | } 33 | }); 34 | 35 | function reset () { 36 | document.body.innerHTML = ''; 37 | button = document.querySelector('button'); 38 | } 39 | --------------------------------------------------------------------------------