diff --git a/Readme.md b/Readme.md index 32ac9c3..07d01d4 100644 --- a/Readme.md +++ b/Readme.md @@ -160,6 +160,17 @@ var url = dom('img').attr('src'); dom('img').attr('src', 'image/of/maru.jpg'); ``` +### .attr(obj) + + Set attributes with an object + +```js +dom('a').attr({ + href : 'http://github.com', + rel : 'source' +}); +``` + ### .ATTR() Attribute getters. These are functionally equivalent diff --git a/index.js b/index.js index 6b38641..dc4dced 100644 --- a/index.js +++ b/index.js @@ -150,6 +150,15 @@ List.prototype.remove = function(){ */ List.prototype.attr = function(name, val){ + + // set via object + if ("object" == typeof name){ + for (var attr in name) { + this.attr(attr, name[attr]); + } + return this; + } + // get if (1 == arguments.length) { return this.els[0] && this.els[0].getAttribute(name); diff --git a/test/dom.js b/test/dom.js index f1a6338..fc29f20 100644 --- a/test/dom.js +++ b/test/dom.js @@ -421,6 +421,25 @@ describe('.attr()', function(){ assert('logo' == list.attr('id')); }) }) + + describe('with an object of key value pairs', function(){ + it('should set the attributes', function(){ + var list = dom('
').find('a'); + var ret = list.attr({ href : '#', rel : 'rels/attr-test'}); + assert(ret == list); + assert('#' == list.get(0).getAttribute('href')); + assert('#' == list.get(1).getAttribute('href')); + assert('rels/attr-test' == list.get(0).getAttribute('rel')); + assert('rels/attr-test' == list.get(1).getAttribute('rel')); + }) + + it('should unset an attribute', function(){ + var list = dom('
').find('a'); + list.attr({ href : null }); + assert(null == list.get(0).getAttribute('href')); + }) + + }) }) describe('.prop()', function(){