├── .gitignore ├── README.md ├── bower.json ├── dist ├── tinytrigger.js └── tinytrigger.min.js ├── index.js ├── package.json └── test └── index.js /.gitignore: -------------------------------------------------------------------------------- 1 | lib-cov 2 | *.seed 3 | *.log 4 | *.csv 5 | *.dat 6 | *.out 7 | *.pid 8 | *.gz 9 | pids 10 | logs 11 | results 12 | npm-debug.log 13 | node_modules 14 | .idea -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # tiny-trigger 2 | 3 | Trigger cross-browser DOM events. Works with [Browserify](http:/browserify.org) and as a standalone. 4 | 5 | [![browser support](https://ci.testling.com/scottcorgan/tiny-trigger.png)](https://ci.testling.com/scottcorgan/tiny-trigger) 6 | 7 | ## Install 8 | 9 | NPM 10 | 11 | ``` 12 | npm install tiny-trigger --save 13 | ``` 14 | 15 | Bower 16 | 17 | ``` 18 | bower install tiny-trigger --save 19 | ``` 20 | 21 | ```html 22 | 23 | ``` 24 | 25 | ## Usage 26 | 27 | Browserify 28 | 29 | ```js 30 | var trigger = require('tiny-trigger'); 31 | 32 | document.querySelector('.some-element').addEventListener('click', function (e) { 33 | // 34 | }); 35 | 36 | trigger('.some-element', 'click'); 37 | ``` 38 | 39 | Browser 40 | 41 | ```js 42 | var trigger = window.tinyTrigger; 43 | 44 | document.querySelector('.some-element').addEventListener('click', function (e) { 45 | // 46 | }); 47 | 48 | trigger('.some-element', 'click'); 49 | ``` 50 | 51 | ## trigger(selector, event[, multiple]) 52 | 53 | * `selector` - css selector OR DOM element OR array of DOM elements 54 | * `event` - the name of the event to trigger 55 | * `multple` - if passing in a css selector, should the function find one element or all the elements that match the selector (querySelector vs querySelectorAll) 56 | 57 | ## Run Tests 58 | 59 | Requires [Phantomjs](phantomjs.org/download.html) is installed 60 | 61 | ``` 62 | npm install 63 | npm test 64 | ``` 65 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tiny-trigger", 3 | "main": "dist/tinytrigger.js", 4 | "version": "0.1.2", 5 | "homepage": "https://github.com/scottcorgan/tiny-trigger", 6 | "authors": [ 7 | "Scott Corgan " 8 | ], 9 | "description": "Trigger cross-browser DOM events", 10 | "keywords": [ 11 | "trigger", 12 | "browser", 13 | "events", 14 | "tiny" 15 | ], 16 | "license": "MIT", 17 | "ignore": [ 18 | "**/.*", 19 | "node_modules", 20 | "bower_components", 21 | "test", 22 | "tests", 23 | "build", 24 | ".gitignore", 25 | "package.json" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /dist/tinytrigger.js: -------------------------------------------------------------------------------- 1 | !function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.tinyTrigger=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o dist/tinytrigger.js && echo 'Bundled'", 9 | "minify": "node_modules/.bin/uglifyjs dist/tinytrigger.js -o dist/tinytrigger.min.js -m && echo 'Minified'", 10 | "build": "npm test && npm run bundle && npm run minify" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/scottcorgan/tiny-trigger.git" 15 | }, 16 | "keywords": [ 17 | "trigger", 18 | "dom", 19 | "events", 20 | "tiny" 21 | ], 22 | "author": "Scott Corgan", 23 | "license": "MIT", 24 | "bugs": { 25 | "url": "https://github.com/scottcorgan/tiny-trigger/issues" 26 | }, 27 | "devDependencies": { 28 | "browserify": "^12.0.1", 29 | "domy-insert": "~0.2.3", 30 | "tap-spec": "^4.1.0", 31 | "tape": "^4.2.2", 32 | "testling": "~1.5.6", 33 | "uglify-js": "~2.4.8" 34 | }, 35 | "testling": { 36 | "files": [ 37 | "test/index.js" 38 | ], 39 | "browsers": [ 40 | "iexplore/10.0", 41 | "iexplore/9.0", 42 | "iexplore/8.0", 43 | "firefox/16..latest", 44 | "chrome/22..latest", 45 | "safari/5.1..latest", 46 | "ipad/6.0..latest", 47 | "iphone/6.0..latest", 48 | "android-browser/4.2..latest" 49 | ] 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | var e = require('../index.js'); 2 | var test = require('tape'); 3 | var insert = require('domy-insert'); 4 | 5 | test('triggers DOM event', function (t) { 6 | insert('
').end(); 7 | 8 | document 9 | .querySelector('.trigger-me') 10 | .addEventListener('click', function (e) { 11 | t.ok(true, 'event called'); 12 | t.end(); 13 | }); 14 | 15 | e('.trigger-me', 'click'); 16 | }); 17 | 18 | test('triggers multiple events', function (t) { 19 | var calls = 0; 20 | 21 | insert('
').end(); 22 | insert('
').end(); 23 | 24 | var elements = [].slice.call(document.querySelectorAll('.multi'), 0); 25 | 26 | for (var i in elements) { 27 | elements[i].addEventListener('click', function (e) { 28 | calls += 1; 29 | }); 30 | } 31 | 32 | e('.multi', 'click', true); 33 | 34 | setTimeout(function () { 35 | t.equal(calls, 2, 'all elements triggered event'); 36 | t.end(); 37 | }, 1); 38 | }); 39 | 40 | test('triggers events for array of DOM elements passed in', function (t) { 41 | var calls = 0; 42 | var elements = document.querySelectorAll('.multi'); 43 | 44 | for (var i in [].slice.call(elements, 0)) { 45 | elements[i].addEventListener('click', function (e) { 46 | calls += 1; 47 | }); 48 | } 49 | 50 | e(elements, 'click', true); 51 | 52 | setTimeout(function () { 53 | t.equal(calls, 2, 'all elements triggered event'); 54 | t.end(); 55 | }, 1); 56 | }); --------------------------------------------------------------------------------