diff --git a/bower.json b/bower.json index b767513..c58e0dd 100644 --- a/bower.json +++ b/bower.json @@ -1,9 +1,9 @@ { "name": "jquery.bem", - "version": "1.3.0", + "version": "1.4.0", "homepage": "https://github.com/zenwalker/jquery-bem", "authors": [ - "Maxim Poletaev " + "Maxim Poletaev " ], "description": "Plugin for comfortable work with BEM DOM from jQuery", "main": "jquery.bem.js", diff --git a/jquery.bem.js b/jquery.bem.js index 7d1c9b4..2461d47 100644 --- a/jquery.bem.js +++ b/jquery.bem.js @@ -51,7 +51,6 @@ var blockClass = this.getBlockClass($this) , block = $this.closest('.' + blockClass); - block.selector = blockClass; return block; }; @@ -137,12 +136,10 @@ * @param {Object} */ BEM.prototype.setMod = function($this, modKey, modVal) { - var self = this - , selector = $this.selector; + var self = this; $this.each(function() { var current = $(this); - current.selector = selector; var mods = self.extractMods(current) , baseName = self.getBaseClass(current); @@ -174,12 +171,10 @@ * @param {Object} */ BEM.prototype.delMod = function($this, modKey, modVal) { - var self = this - , selector = $this.selector; + var self = this; $this.each(function() { var current = $(this); - current.selector = selector; var mods = self.extractMods(current) , baseName = self.getBaseClass(current); @@ -215,12 +210,10 @@ var self = this , modVal = modVal || null , inverse = inverse || false - , selector = $this.selector , result = $(); $this.each(function() { var current = $(this); - current.selector = selector; var mods = self.extractMods(current) , baseName = self.getBaseClass(current); @@ -241,7 +234,6 @@ : current.filter('.' + modName)); }); - result.selector = selector; return result; }; @@ -334,17 +326,12 @@ var classes, result = []; if (typeof $this == 'object') { - - if ($this.selector.indexOf('.') === 0) { - classes = $this.selector.split('.'); - } - else if ($this.attr('class') != undefined) { + if ($this.attr('class') != undefined) { classes = $this.attr('class').split(' '); } else { return null; } - } else { classes = $this.split('.'); @@ -496,7 +483,6 @@ $.each(selectors, function(i, sel) { var classType = self.getClassType(sel); - if (classType && classType != 'mod') { baseClass = sel; } @@ -595,12 +581,12 @@ toggleMod: function (modKey, modVal1, modVal2) { if (this.hasMod(modKey, modVal1)) { return this - .delMod(modKey, modVal1) - .setMod(modKey, modVal2); + .delMod(modKey, modVal1) + .setMod(modKey, modVal2); } else { return this - .delMod(modKey, modVal2) - .setMod(modKey, modVal1); + .delMod(modKey, modVal2) + .setMod(modKey, modVal1); } } }); diff --git a/package.json b/package.json index 0261486..0725692 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jquery-bem", - "version": "1.3.0", + "version": "1.4.0", "description": "Plugin for comfortable work with BEM DOM from jQuery", "main": "jquery.bem.js", "repository": { diff --git a/test/index.html b/test/index.html index 8ea4212..474f8f6 100644 --- a/test/index.html +++ b/test/index.html @@ -3,9 +3,9 @@ jQuery.BEM Test - - - + + + @@ -14,9 +14,23 @@
-
-
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
diff --git a/test/jquery.bem.test.js b/test/jquery.bem.test.js index d6f6b57..7bc7e61 100644 --- a/test/jquery.bem.test.js +++ b/test/jquery.bem.test.js @@ -102,14 +102,27 @@ QUnit.test('build selectors', function(assert) { }); QUnit.test('selecting elements', function(assert) { - var $block = $('#block'); - var $elem = $('#elem'); + var $fixture = $('#selecting-elements'); + var $block = $('.block', $fixture); + var $elem = $('.block__elem', $fixture); + var $subelem = $('.block__subelem', $fixture); - assert.equal($block.ctx('block').elem('elem')[0], $elem[0], + assert.equal($block.elem('elem')[0], $elem[0], 'selecting element' ); - - assert.equal($block.ctx('block').elem($elem, 'elem')[0], $elem[0], - 'selecting element on specified context' + assert.equal($block.elem('subelem')[0], $subelem[0], + 'selecting subelement' ); }); + +QUnit.test('selecting elements with context', function(assert) { + var $fixture = $('#selecting-with-context'); + + var $blockA = $('.block-a', $fixture); + var $elemA = $('.block-a__elem', $fixture); + var $blockB = $('.block-b', $fixture); + var $elemB = $('.block-b__elem', $fixture); + + assert.equal($blockA.elem('elem')[0], $elemA[0]); + assert.equal($blockB.elem('elem')[0], $elemB[0]); +});