diff --git a/kis.js b/kis.js index e7c1489..b6d4666 100644 --- a/kis.js +++ b/kis.js @@ -64,20 +64,23 @@ */ $_ = function(sel) { + // Make a copy before adding properties + var self = dcopy($_); + //Get the DOM objects from the selector sel = $(sel); - + //Have window be default selector, just in case if(typeof sel === "undefined") { - sel = (typeof $_.el !== "undefined") - ? $_.el + sel = (typeof self.el !== "undefined") + ? self.el : window; } - $_.el = sel; + self.el = sel; - return dcopy($_); + return self; }; /** diff --git a/tests/index.html b/tests/index.html index 479a687..a522980 100644 --- a/tests/index.html +++ b/tests/index.html @@ -11,7 +11,10 @@

    -
    test markup, will be hidden
    +
    + test markup, will be hidden + +
    diff --git a/tests/tests.js b/tests/tests.js index 5b70da1..59458eb 100644 --- a/tests/tests.js +++ b/tests/tests.js @@ -33,4 +33,42 @@ module("ajax"); + + // -------------------------------------------------------------------------- + + module("events"); + + test("Browser expando support", function() { + expect(3); + // kis-js events uses expando properties to store event listeners + // If this test fails, the event module will likely fail as well + var ele = document.createElement("div"); + ele.expando = {a:5, b:"c", c: function cool(){return ele}}; + equals(ele.expando.a, 5); + equals(ele.expando.b, "c"); + equals(ele.expando.c(), ele, + "Closure isn't broken by being assigned to an expando property"); + }); + + // -------------------------------------------------------------------------- + + module("dom"); + + test("Add/Remove Class", function() { + expect(4); + var $test = $_("#testSpan"); + var ele = $test.el; + + $test.dom.addClass("coolClass"); + equals(ele.className, "coolClass"); + + $test.dom.addClass("anotherClass"); + equals(ele.className, "coolClass anotherClass"); + + $test.dom.removeClass("coolClass"); + equals(ele.className, "anotherClass"); + + $test.dom.removeClass("anotherClass"); + ok(ele.className === undefined || ele.className === "", "testSpan.className is empty"); + }); }()); \ No newline at end of file