1234567891011121314151617181920212223242526272829303132333435 |
- angular.module('app')
- .directive('uiToggleClass', ['$timeout', '$document', function($timeout, $document) {
- return {
- restrict: 'AC',
- link: function(scope, el, attr) {
- el.on('click', function(e) {
- e.preventDefault();
- var classes = attr.uiToggleClass.split(','),
- targets = (attr.target && attr.target.split(',')) || Array(el),
- key = 0;
- angular.forEach(classes, function( _class ) {
- var target = targets[(targets.length && key)];
- ( _class.indexOf( '*' ) !== -1 ) && magic(_class, target);
- $( target ).toggleClass(_class);
- key ++;
- });
- $(el).toggleClass('active');
- function magic(_class, target){
- var patt = new RegExp( '\\s' +
- _class.
- replace( /\*/g, '[A-Za-z0-9-_]+' ).
- split( ' ' ).
- join( '\\s|\\s' ) +
- '\\s', 'g' );
- var cn = ' ' + $(target)[0].className + ' ';
- while ( patt.test( cn ) ) {
- cn = cn.replace( patt, ' ' );
- }
- $(target)[0].className = $.trim( cn );
- }
- });
- }
- };
- }]);
|