Run something when a DOM element appears and when it exits.
No dependencies. Legacy IE compatible. 1kb .min.gz.
Run something to initialize an element on its first appearance.
onmount = require('onmount')
onmount('.push-button', function () {
$(this).on('click', function () {
alert('working...')
})
})
Call $.onmount()
everytime your code changes.
→
$('<button class="push-button">Do something</button>')
.appendTo('body')
$.onmount()
$(".push-button").click() //=> 'working...'
jQuery is optional; use it to poll on popular events. →
$(document).on('ready show.bs closed.bs load page:change', function () {
$.onmount()
})
Supply a 2nd function to onmount() to execute something when the node is first detached. →
$.onmount('.push-button', function () {
/*...*/
}, function () {
alert('button was removed')
})
document.body.innerHTML = ''
$.onmount() //=> 'button was removed'
Onmount is a safe, reliable, idempotent, and testable way to attach JavaScript behaviors to DOM nodes. It's great for common websites that are not Single-Page Apps. Read more on its premise and motivation.
rsjs (Reasonable System for JavaScript Structure) is a great standard that onmount fits perfectly into.
Onmount is available via npm and Bower.
npm install onmount
bower install onmount
It can be used as a CommonJS module or on its own. It doesn't require jQuery, but if jQuery is found, it'll attach itself to it as $.onmount
.
onmount = require('onmount') // With CommonJS (ie, Browserify)
window.onmount // with no module loaders:
$.onmount // with jQuery
Runs all behaviors.
When used with jQuery, this can be passed as an event handler, eg,
$(onmount)
or$(document).on('load', onmount)
.
Runs all behaviors registered for selector
.
Registers a behavior for selector
to run the callback init()
.
Registers a behavior for selector
to run the callback init()
. The exit()
callback will be called once the behavior is triggered again but the element is no longer attached to the DOM.
The callbacks are passed an object
b
, and the same object is passed for bothinit
andexit
. This allows them to communicate and keep aware of state. A string ID is also provided,b.id
, which is guaranteed unique for every behavior-element pair.
Forces the teardown of all currently-applied behaviors. This triggers the exit handlers for all behaviors currently on the page.
Clears all defined behaviors. Useful for tests.
Automatically invoke when new DOM elements appear using MutationObserver API. Returns true
if it succeeds.
Turns off observation previously turned on via onmount.observe()
.
Set this to true
to see debug messages.
All modern browsers and IE8+. For legacy IE, use it with jQuery 1.x.
Examples are available in the source repo. See examples →
onmount © 2015+, Rico Sta. Cruz. Released under the MIT License.
Authored and maintained by Rico Sta. Cruz with help from contributors (list).
ricostacruz.com · GitHub @rstacruz · Twitter @rstacruz