=====================================================
Objects and methods available to |javascript| modules
=====================================================
CKAN makes a few helpful objects and methods available for every JavaScript
module to use, including:
* ``this.el``, the HTML element that this instance of the object was
initialized for. A jQuery element. See :ref:`options and el`.
* ``this.options``, an object containing any options that were passed to the
module via ``data-module-*`` attributes in the template.
See :ref:`options and el`.
* :js:data:`this.$()`, a jQuery find function that is scoped to the HTML
element that the JavaScript module was applied to. For example,
``this.$('a')`` will return all of the ```` elements inside the module's
HTML element, *not* all of the ```` elements on the entire page.
This is a shortcut for ``this.el.find()``.
jQuery provides many useful features in an easy-to-use API, including
document traversal and manipulation, event handling, and animation. See
`jQuery's own docs `_ for details.
.. _this_sandbox:
* :js:data:`this.sandbox`, an object containing useful functions for all
modules to use, including:
* :js:data:`this.sandbox.client`, an API client for calling the API
* :js:data:`this.sandbox.jQuery`, a jQuery find function that is not bound to
the module's HTML element. ``this.sandbox.jQuery('a')`` will return all the
```` elements on the entire page.
Using :js:data:`this.sandbox.jQuery` is discouraged, try to stick to
:js:data:`this.$` because it keeps |javascript| modules more independent.
See :doc:`javascript-sandbox`.
* A collection of :doc:`jQuery plugins `.
* :ref:`Pubsub functions ` that modules can use to communicate with
each other, if they really need to.
* Bootstrap's JavaScript features, see the
`Bootstrap docs `__
for details.
* The standard |javascript| ``window`` object. Using ``window`` in CKAN
|javascript| modules is discouraged, because it goes against the idea of a
module being independent of global context. However, there are some
circumstances where a module may need to use ``window`` (for example if a
vendor plugin that the module uses needs it).
* ``this._`` and ``this.ngettext`` for string internationalization. See
:ref:`javascript i18n`.
* ``this.remove()``, a method that tears down the module and removes it from
the page (this usually called by CKAN, not by the module itself).