------------------------------------------------------------------------------- DojoX jq ------------------------------------------------------------------------------- Version 0.0.1 Release date: 8/9/2009 ------------------------------------------------------------------------------- Project state: experimental ------------------------------------------------------------------------------- Credits James Burke ------------------------------------------------------------------------------- Project description DojoX jq is a compatibility layer that tries to match the jquery 1.3.2 API. ------------------------------------------------------------------------------- Dependencies: - Dojo Core. ------------------------------------------------------------------------------- Documentation IF YOU WISH TO WORK ON THIS MODULE, PLEASE DO NOT LOOK AT THE JQUERY SOURCE. We want CLA-clean code to be put in the Dojo repos. Just refer to the jquery API documentation and unit tests. As we get bug reports, we can build up our own test suite, and then hopefully contribute those tests back to jquery if their tests do not adequately cover an API call. This module needs a lot of work, it is in the very initial, rough stages. Some (all?) of the code is ugly. It is missing some APIs, notably queue/dequeue, the FX methods and live/die. There are also some incompatibilities with how acme and sizzle operate at the moment, mentioned in the comments in jq.js The tests for this module so far have been the jquery 1.3.2 tests. Since those tests are not CLA-clean, you will need to download them from here: http://www.tagneto.org/dojo/jquery132.zip Place the zip file in the dojox/jq/tests directory and unzip it. Then you can run the jquery132/test/index.html file inside there to start the tests. The tests were changed in a couple ways. For the tests I modified, you can look for //JRB changed: to find the original test construction. Things that were changed: 1) acme requires spaces between CSS3 selectors, where sizzle does not ("div>span" fails in acme, but works in sizzle). There is a dtk.org bug on it, and it is allowed by the CSS3 spec to not have spaces so hopefully that incompatibility can go away after a while. 2) sizzle supports some psuedos like :last, :first: :odd, :even that work on the list of matched elements, not just individual elements or their children. This is a more fundamental change to acme, but it is probably doable. 3) The XML tests and ajax tests that call out to files fail because of some weird timing interaction between the jquery unit test thing and our XHR code. I believe since our code has a timer where we check the status of the XHR calls instead of using load callbacks directly on the XHR callbacks, something is confused in jquery -- the failure case is fired before our callbacks work. If only they used deferreds. ;) To get those tests to sort of work, I modified qunit/testrunner.js's process() method to be like so: function process() { if(config.queue.length && !config.blocking){ setTimeout(function(){ if(config.queue.length && !config.blocking){ config.queue.shift()(); process(); } }, 100); } } Change 100 above to tune it depending on your patience and how much you want to make sure the tests have enough time to run. With 100, you can see some of the ajax tests passing. From some previous notes (I have not checked more recently), it looks like the compat layer fires "ajaxStop" more than jquery, I think due to how we do our async in-flight testing, so that messes up some of the testing in the ajax calls, but I think that is a detail that is fine to go with. I just have to make sure that is really the cause of a test failure and not something else. So I will probably need to modify the tests more. ------------------------------------------------------------------------------- Installation instructions Grab the following from the Dojo SVN Repository: http://svn.dojotoolkit.org/src/dojox/trunk/jq.js http://svn.dojotoolkit.org/src/dojox/trunk/jq/* Install into the following directory structure: /dojox/jq.js ...which should be at the same level as your Dojo checkout. -------------------------------------------------------------------------------