MCPcopy Create free account
hub / github.com/angular-ui/ui-router / bindJQuery

Function bindJQuery

test/angular/1.3/angular.js:1534–1583  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1532var bindJQueryFired = false;
1533var skipDestroyOnNextJQueryCleanData;
1534function bindJQuery() {
1535 var originalCleanData;
1536
1537 if (bindJQueryFired) {
1538 return;
1539 }
1540
1541 // bind to jQuery if present;
1542 jQuery = window.jQuery;
1543 // Use jQuery if it exists with proper functionality, otherwise default to us.
1544 // Angular 1.2+ requires jQuery 1.7+ for on()/off() support.
1545 // Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older
1546 // versions. It will not work for sure with jQuery <1.7, though.
1547 if (jQuery && jQuery.fn.on) {
1548 jqLite = jQuery;
1549 extend(jQuery.fn, {
1550 scope: JQLitePrototype.scope,
1551 isolateScope: JQLitePrototype.isolateScope,
1552 controller: JQLitePrototype.controller,
1553 injector: JQLitePrototype.injector,
1554 inheritedData: JQLitePrototype.inheritedData
1555 });
1556
1557 // All nodes removed from the DOM via various jQuery APIs like .remove()
1558 // are passed through jQuery.cleanData. Monkey-patch this method to fire
1559 // the $destroy event on all removed nodes.
1560 originalCleanData = jQuery.cleanData;
1561 jQuery.cleanData = function(elems) {
1562 var events;
1563 if (!skipDestroyOnNextJQueryCleanData) {
1564 for (var i = 0, elem; (elem = elems[i]) != null; i++) {
1565 events = jQuery._data(elem, "events");
1566 if (events && events.$destroy) {
1567 jQuery(elem).triggerHandler('$destroy');
1568 }
1569 }
1570 } else {
1571 skipDestroyOnNextJQueryCleanData = false;
1572 }
1573 originalCleanData(elems);
1574 };
1575 } else {
1576 jqLite = JQLite;
1577 }
1578
1579 angular.element = jqLite;
1580
1581 // Prevent double-proxying.
1582 bindJQueryFired = true;
1583}
1584
1585/**
1586 * throw error if the argument is falsy.

Callers 1

angular.jsFile · 0.70

Calls 1

extendFunction · 0.70

Tested by

no test coverage detected