MCPcopy Create free account
hub / github.com/cafebazaar/blacksmith / bindJQuery

Function bindJQuery

web/static/bower_components/angular/angular.js:1736–1789  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1734var bindJQueryFired = false;
1735var skipDestroyOnNextJQueryCleanData;
1736function bindJQuery() {
1737 var originalCleanData;
1738
1739 if (bindJQueryFired) {
1740 return;
1741 }
1742
1743 // bind to jQuery if present;
1744 var jqName = jq();
1745 jQuery = isUndefined(jqName) ? window.jQuery : // use jQuery (if present)
1746 !jqName ? undefined : // use jqLite
1747 window[jqName]; // use jQuery specified by `ngJq`
1748
1749 // Use jQuery if it exists with proper functionality, otherwise default to us.
1750 // Angular 1.2+ requires jQuery 1.7+ for on()/off() support.
1751 // Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older
1752 // versions. It will not work for sure with jQuery <1.7, though.
1753 if (jQuery && jQuery.fn.on) {
1754 jqLite = jQuery;
1755 extend(jQuery.fn, {
1756 scope: JQLitePrototype.scope,
1757 isolateScope: JQLitePrototype.isolateScope,
1758 controller: JQLitePrototype.controller,
1759 injector: JQLitePrototype.injector,
1760 inheritedData: JQLitePrototype.inheritedData
1761 });
1762
1763 // All nodes removed from the DOM via various jQuery APIs like .remove()
1764 // are passed through jQuery.cleanData. Monkey-patch this method to fire
1765 // the $destroy event on all removed nodes.
1766 originalCleanData = jQuery.cleanData;
1767 jQuery.cleanData = function(elems) {
1768 var events;
1769 if (!skipDestroyOnNextJQueryCleanData) {
1770 for (var i = 0, elem; (elem = elems[i]) != null; i++) {
1771 events = jQuery._data(elem, "events");
1772 if (events && events.$destroy) {
1773 jQuery(elem).triggerHandler('$destroy');
1774 }
1775 }
1776 } else {
1777 skipDestroyOnNextJQueryCleanData = false;
1778 }
1779 originalCleanData(elems);
1780 };
1781 } else {
1782 jqLite = JQLite;
1783 }
1784
1785 angular.element = jqLite;
1786
1787 // Prevent double-proxying.
1788 bindJQueryFired = true;
1789}
1790
1791/**
1792 * throw error if the argument is falsy.

Callers 1

angular.jsFile · 0.85

Calls 4

jqFunction · 0.85
isUndefinedFunction · 0.85
extendFunction · 0.85
jQueryFunction · 0.85

Tested by

no test coverage detected