Why jQuery’s Philosophy is Better

Posted on by

There have been a whole bunch of posts on this blog about the differences in code size between jQuery and Prototype. The basic premise of those posts (which I agree with) is that because of the way jQuery code is structured, all sorts of typical Javascript design patterns are rendered shorter and simpler in the framework when compared with Prototype.

For the longest time, I was a confessed Prototype junkie. I discovered the framework when I started doing Rails work, and for Rails developers, there is very little alternative. Prototype, in all its ugliness, is baked into Rails, and it’s very difficult to give up the productivity gains Rails provides by coding Javascript by hand. Going further on a tangent, that’s why I started working on jQuery on Rails, which aims to allow Rails developers to use jQuery as a drop-in replacement for Prototype.

But back to the purpose of this post, there’s something more fundamentally different about jQuery’s programming sense than just its code size. In fact, the difference in sensibilities is very similar to the difference in sensibilities between Java and Ruby, so it’s ironic that the Rails community has embraced Prototype so completely.

Let’s take a look at some code comparisons. First up, adding some arbitrary HTML after a particular node.

In Prototype:

new Insertion.After('myId', 'Arbitrary HTML');

In jQuery:

$('#myId').after('Arbitrary HTML');

Now, we haven’t done much by way of reducing code clutter (although jQuery’s is cleaner), but there is a fundamental difference in the way that Prototype and jQuery each approach the problem.

Prototype creates a series of monolithic classes that each encapsulate some functionality. Developers then pass in an id, and some other parameters, and the class does what it’s supposed to do. Very much like the Java way of encapsulating functionality (like the Math class, for instance). NOTE: That’s not to say that Java couldn’t do things this way.

jQuery approaches the problem in a fundamentally different way. It sees sets of HTML nodes as objects to pass messages to (more like the traditional Ruby way). So instead of having a separate class that adds text after an HTML node, jQuery glues the functionality onto the jQuery object, which is returned by the $ function. By contrast, Prototype’s $ function returns a vanilla DOM node.

Prototype attempted to achieve similar functionality with its $$ method added in the latest RC of the framework, but there’s a fundamental difference. While Prototype’s $$ returns an array of DOM Elements, jQuery’s $ is the fundamental underpinning of the entire framework. Virtually all jQuery functions bind to the jQuery object, which is returned by the $ method.
The benefits of the jQuery way are highly visible:

  • Chainability. Because jQuery objects have functionality glued onto them, they return other jQuery objects, which the developer can then pass additional messages to. The trivial example on the jQuery website is $(“p.surprise”).addClass(“ohmy”).show(“slow”);
  • Use of CSS selectors and XPath operators. Because jQuery passes messages to objects, it can (and has) implement additional selector functionality into the $ method. The methods that are glued onto jQuery objects just see an array-like object that holds a series of DOM elements. It doesn’t care how we got them. So plugin developers can add additional parsers into the $ method, or glue additional functions onto the jQuery object rather easily.
  • Which brings us to plugin development. The jQuery way is very conducive to plugin development. It’s quite easy to add functionality that takes advantage of the jQuery object, and jQuery plugins are usually much shorter than their counterparts. jQuery Plugins
  • Automatic looping. jQuery methods are required to automatically loop through all DOM elements in the array, and apply the desired method. So $(expression).after(‘some HTML’) transparently adds the HTML after every single element returned by the expression. $(‘p’).after(‘some HTML’) will add ‘some HTML’ after every <p> on the page, for instance. Personally, I find the elimination of iteration in my code (in most cases) to be one of the top practical, day-to-day benefits of using jQuery.
  • Builds on itself. As jQuery has matured, it’s become easier to build plugins on top of the existing architecture. Because all jQuery functions automatically loop, using existing jQuery functions means that annoying iteration is all but gone.

There’s more, but the thread that runs through all of the benefits comes out of the very meticulous way that John Resig has made the jQuery object/array accept passed messages, rather than build various monolithic functionality blocks, each of which must be built from scratch.

Some other examples:
AJAX Updater in Prototype:

new Ajax.Updater('placeholder', url, { method: 'get', parameters: par });

AJAX Updater In jQuery:

$('#placeholder').load(url + par);

Note: This example doesn’t deal with the obvious iteration benefits we get if we wanted to load the response into every <p> object, for instance.

Adding a class to an element in Prototype:

Element.addClassName('element', 'className');

Adding a class to an element in jQuery:

$('#element').addClass('className');

Adding a class to a group of elements in Prototype:

$$('.element').each(function(node) {
Element.addClassName(node, 'className');
}

Adding a class to a group of elements in jQuery:

$('.element').addClass('className');

That last one is the clearest example of the difference in methodology. Because jQuery is passing messages to jQuery objects, the code is barely changed. jQuery doesn’t care that we’re now adding a class to a group of objects instead of one object; the underlying code is the same (add the class to the set of elements in the object). Prototype, on the other hand, requires an iterator.

And as your code becomes more complex, jQuery’s scales easily, while nested loops become the norm in frameworks like Prototype.

[UPDATE] An astute reader (Mislav) pointed out that Prototype does indeed do just a bit of what jQuery does. Prototype seems to bind the Element class to DOM Elements, allowing things like $(‘myElement’).hide(), and such. However, it only applies to the Element module, and seems to only work on single DOM elements. Binding the Elements module is cool, but it’s more an afterthought than the way jQuery makes it a fundamental design decision.

98 thoughts on “Why jQuery’s Philosophy is Better

  1. Pingback: テ税。テ青ーテ青コテ青セテ青ケ JS-テ鯛榲鯛ぎテ青オテ青ケテ青シテ青イテ青セテ鯛ぎテ青コ テ青イテ鯛ケテ青アテ鯛ぎテ青ーテ鯛堙打? » Wake Up!

  2. Pingback: Jquery vs Prototype na prテδ。tica at Webpoint - Weblosofia com CSS, Jquery, Javascript, Ajax, PHP etc.

  3. Pingback: Design By Tim » Blog Archive » jQuery for the non-visually impared

  4. Pingback: The Five JavaScript Libraries - Scatterism

  5. Pingback: My Cup of Java - Today’s Top Blog Posts on Java - Powered by SocialRank

  6. Pingback: Phil Rathe.com » jQuery + Rails ( Part 1 )

  7. Pingback: Phil Rathe.com » jQuery + Rails ( Part 1 )

  8. Hi, Iテつエm new to this stuff but I guess itテつエs not only prototype that makes it interesting for ruby but also scriptaculous which needs prototype and I heard, prototype enlarges the capabilities of javascript, does jquery provide this additional funct. too?

  9. Pingback: Prototype en JQuery, ‘t vervolg « CoochieHoochieMan

  10. jQuery is awesome for most of my projects. There are others where I use prototype but its all about using the best tool for what needs to be done.

    To those who are complaining, you can *use whatever you want*. If you cant then learn how to deal with more than one framework and improve your coding skills, thats your problem. Also, like some people have posted… not using a framework because you disagree with the community behind it? Really? I bet that goes over real well when it comes to actually doing work, choosing something for a job not because its right but because its “community” is better.

    PS. I hate javascript. Freakin ajax hippies.

  11. AAR Group: テ。テウテオテ」テテォテイテ・テーテアテェティテゥ テウテキテ・テイ, テェテテォテ・テュテ、テテーテシ テ。テウテオテ」テテォテイテ・テーテ, テッテーテョティテァテ「テョテ、テアテイテ「テ・テュテュテサテゥ テェテテォテ・テュテ、テテーテシ ティ テ。テウテオテ」テテォテイテ・テーテアテェテテソ テエティテュテテュテアテョテ「テテソ テョテイテキツクテイテュテョテアテイテシ, テェテテォテ・テュテ、テテーテシ テ。テウテオテ」テテォテイテ・テーテ 2008, テテウテ、ティテイ, テェテテ、テーテョテ「テサテゥ テェテョテュテアテテォテイティテュテ」, テテウテ、ティテイ, テテウテ、ティテイ テ。テウテオテ」テテォテイテ・テーテアテェティテゥ テウテキテ・テイ ティ テェテテォテ・テュテ、テテーテシ テ。テウテオテ」テテォテイテ・テーテ テアテテゥテイ http://www.aargroup.ru

  12. CFO Russia – テ。テォテョテ」ティ ,テ テイテテェテヲテ・ テステイテョ テッテーテョテアテイテーテテュテアテイテ「テョ テ、テォテソ テュテ・テァテテ「ティテアティテャテョテ」テョ テョテ。テケテ・テュティテソ テイテョテッ-テャテ・テュテ・テ、テヲテ・テーテョテ「 テュテ テイテ・テャテサ ティ テ「テアテ・ テ、テォテソ テョテ。テケテ・テュティテソ テエティテュテテュテアテョテ「テサテオ テ、ティテーテ・テェテイテョテーテョテ「 ,テ テイテテェテヲテ・ テアテ「テソテァテテュテュテサテ・ テア テウテッテーテテ「テォテ・テュティテ・テャ ティ テエティテュテテュテアテテャティ, ティ テッテォテョテケテテ、テェテ テ、テォテソ テョテ。テケテ・テュティテソ テエティテュテテュテアテョテ「テサテオ テ、ティテーテ・テェテイテョテーテョテ「. テ妥テゥテイ http://www.cfo-russia.r

  13. テ姪催暗敕 テステイテョ テ「テュテウテイテーテ・テュテュティテ・ テテウテ、ティテイテサ ティ テエティテュテテュテアテョテ「テサテゥ テテュテテォティテァ ティ テウテッテーテテ「テォテ・テュティテ・ テ。ティテァテュテ・テア テッテーテョテカテ・テアテアテテャティ ティ テャテョテ、テ・テォティテーテョテ「テテュティテ・ テ。ティテァテュテ・テア テッテーテョテカテ・テアテアテョテ「 ティ テュテテウテキテュテョ ティテアテアテォテ・テ、テョテ「テテイテ・テォテシテアテェティテ・ テーテテ。テョテイテサ, テッテョテ「テサテクテ・テュティテ・ テェテ「テテォティテエティテェテテカティティ ティ テ。テウテオテ」テテォテイテ・テーテアテェティテゥ テウテキテ・テイ, テアティテアテイテ・テャテ テャテ・テュテ・テ、テヲテャテ・テュテイテ テェテテキテ・テアテイテ「テ, テアテテゥテイ http://www.effcom.ru.

  14. テ氾・テャティテ、テ-テテウテ、ティテイ テステイテョ: テテュテテォティテァ テ。テウテオテ」テテォテイテ・テーテアテェテョテゥ テョテイテキテ・テイテュテョテアテイティ, due diligence, テテュテテォティテァ テ。テウテオテ」テテォテイテ・テーテアテェテョテゥ テョテイテキテ・テイテュテョテアテイティ, テ テイテテェテヲテ・ テテュテテォティテァ テ。テウテオテ」テテォテイテ・テーテアテェテョテゥ テョテイテキテ・テイテュテョテアテイティ, テ テイテテェテヲテ・ due diligence ティ due diligence, テ テイテテェテヲテ・ テョテッテイティテャティテァテテカティティ テュテテォテョテ」テョテョテ。テォテョテヲテ・テュティテソ, テアテテゥテイ http://www.femida-audit.com

  15. テ氾・テャティテ、テ-テテウテ、ティテイ テステイテョ: テョテッテイティテャティテァテテカティティ テュテテォテョテ」テョテョテ。テォテョテヲテ・テュティテソ, テ テイテテェテヲテ・ テウテアテォテウテ」ティ テ「テ・テ、テ・テュティテソ テ。テウテオテ」テテォテイテ・テーテアテェテョテ」テョ テウテキテ・テイテ ティ テョテカテ・テュテェテ テッテテェテ・テイテョテ「 テテェテカティテゥ, テ テイテテェテヲテ・ テテウテ、ティテイ テョテイテキテ・テイテュテョテアテイティ ティ テョテカテ・テュテェテ テッテテェテ・テイテョテ「 テテェテカティテゥ ティ テテウテ、ティテイ テョテイテキテ・テイテュテョテアテイティ, テ テイテテェテヲテ・ テテウテ、ティテイ テェテーテ・テ、ティテイテュテサテオ テョテーテ」テテュティテァテテカティテゥ, テアテテゥテイ http://www.femida-audit.com

  16. AAR Group: テ。テウテオテ」テテォテイテ・テーテアテェティテゥ テウテキテ・テイ, テーテテァテーテテ。テョテイテェテ テアテイテーテテイテ・テ」ティティ ティ テウテアテォテウテ」ティ テ。テウテオテ」テテォテイテ・テーテアテェテョテ」テョ テウテキテ・テイテ, テ。テウテオテ」テテォテイテ・テーテアテェテテソ テエティテュテテュテアテョテ「テテソ テョテイテキツクテイテュテョテアテイテシ ティ テ。テウテオテ」テテォテイテ・テーテアテェティテ・ テウテアテォテウテ」ティ, テョテーテ」テテュティテァテテカティテソ テ。ティテァテュテ・テアテ ティ テ。ティテァテュテ・テア テッテォテテュ テョテーテ」テテュティテァテテカティティ ティ テ。テウテオテ」テテォテイテ・テーテアテェテテソ テエティテュテテュテアテョテ「テテソ テョテイテキツクテイテュテョテアテイテシ テアテテゥテイ http://www.aargroup.ru

  17. テ甘テーテイテ テ古ョテアテェテ「テサ, テッティテーテテャティテ、テサ ティ テッテョティテアテェテョテ「テサテゥ, テエテョテイテョ ティ テェテテーテイテ テテ」ティテッテ・テイ, テ、テョテャテ ティ ティテュテイテ・テーテテェテイティテ「テュテテソ テェテテーテイテ, map Moscow ティ breadth of Moscow, satellite card ティ テェテテーテイテ テ暗アテッテテュティティ ティ テェテョテアテャテョテ、テーテョテャテサ, テッティテーテテャティテ、テサ ティ テェテテーテイテ テャテョテアテェテョテ「テアテェテョテゥ テョテ。テォテテアテイティ ティ テェテョテョテーテ、ティテュテテイテサ テャテ・テアテイテュテョテアテイティ, テュテ テアテテゥテイテ・ SmMoscow.Narod.Ru

  18. Pingback: JQuery vs. Prototype | Phine Solutions

  19. テ湘・テーテ・テョテエテョテーテャテォテ・テュティテ・ テテ「テイテョテャテョテ。ティテォテ・テゥ, テャテョテイテョテカティテェテォテョテ「, テュテョテャテ・テーテュテサテオ テテ」テーテ・テ」テテイテョテ「, テアテッテ・テカテイテ・テオテュティテェティ テ、テォテソ テエティテァティテキテ・テアテェティテオ ティ テセテーティテ、ティテキテ・テアテェティテオ テォティテカ. テテ・テァテュテテォティテキテュテサテゥ, テュテテォティテキテュテサテゥ テーテテアテキテ・テイ, テッテーテ・テ、テョテアテイテテ「テォテソテセテイテアテソ テ「テアテ・ テ、テョテェテウテャテ・テュテイテサ テ、テォテソ テ。テウテオテ」テテォテイテ・テーティティ, テェテテアテアテョテ「テサテゥ テキテ・テェ, テアテキテ・テイ テエテテェテイテウテーテ.

  20. Pingback: What Makes jQuery a Good Choice?

  21. CFO テ静ョテアテアティテソ – テアテイテテイテシティ, テェテテェ テョテアテウテケテ・テアテイテ「テォテソテォティ テーテ・テョテーテ」テテュティテァテテカティテセ ティ テ。テォテョテ」ティ ティ テェテテェ テョテアテウテケテ・テアテイテ「テォテソテォティ テーテ・テョテーテ」テテュティテァテテカティテセ ティ テアテイテテイテシティ ,テ テイテテェテヲテ・ テアテ「テソテァテテュテュテサテ・ テア テウテッテーテテ「テォテ・テュティテ・テャ ティ テエティテュテテュテアテテャティ, ,テ テイテテェテヲテ・ テッテーテョテオテョテ、ティテォティ テョテ。テウテキテ・テュティテ・ ティ テ「テアテ・ テ、テォテソ テョテ。テケテ・テュティテソ テエティテュテテュテアテョテ「テサテオ テ、ティテーテ・テェテイテョテーテョテ「. テ妥テゥテイ http://www.cfo-russia.r

  22. テ古・テ。テ・テォテシ ティテァ テャテテアテアティテ「テ, テイテ・テォテ・テエテョテュテュテテソ テ。テウテ、テェテ, テェテテ。ティテュテ・テイテサ ティテァ テャテテアテアティテ「テ ,テ テイテテェテヲテ・ テイテ・テォテ・テエテョテュテュテテソ テ。テウテ、テェテ ティ テ「ティテュテュテサテゥ テッテョテ」テーテ・テ。, テャテ・テ。テ・テォテシ ティテァ テ、テ・テーテ・テ「テ, テャテ・テ。テ・テォテシ ティテァ テャテテアテアティテ「テ ,テ テイテテェテヲテ・ テ「ティテュテュテサテ・ テクテェテテエテサ ,テ テイテテェテヲテ・ ティテァテ」テョテイテョテ「テォテ・テュティテ・ テャテ・テ。テ・テォティ ,テ テイテテェテヲテ・ ティテァテ」テョテイテョテ「テォテ・テュティテ・ テャテ・テ。テ・テォティ テュテ テァテテェテテァ. テ妥テゥテイ http://www.r-wood.ru

  23. テ妥ィテ」テテーテュテサテゥ テアテテォテョテュ ,テ テイテテェテヲテ・ テアティテ」テテーテュテサテゥ テアテテォテョテュ, テアティテ」テテーテュテサテゥ テアテテォテョテュ ,テ テイテテェテヲテ・ ティテュテイテ・テーテシテ・テーテサ ティテァ テ、テ・テーテ・テ「テ ,テ テイテテェテヲテ・ テオテシテセテャティテ、テョテーテサ ティ テェテテ。ティテュテ・テイテサ ティテァ テャテテアテアティテ「テ ,テ テイテテェテヲテ・ テイテ・テォテ・テエテョテュテュテテソ テ。テウテ、テェテ, テャテ・テ。テ・テォテシ ティテァ テャテテアテアティテ「テ ティ テオテシテセテャティテ、テョテーテサ ,テ テイテテェテヲテ・ テ、ティテァテテゥテュ テャテ・テ。テ・テォティ ,テ テイテテェテヲテ・ テオテーテテュテ・テュティテ・ テ「ティテュテ. テ妥テゥテイ http://www.r-wood.ru

  24. テ姪催暗敕 テステイテョ テエティテュテテュテアテョテ「テサテゥ テテュテテォティテァ テッテーテ・テ、テッテーティテソテイティテソ ティ テエティテュテテュテアテョテ「テョ テオテョテァテソテゥテアテイテ「テ・テュテュテサテゥ テテュテテォティテァ テッテーテ・テ、テッテーティテソテイティテソ ティ テ。テウテオテ」テテォテイテ・テーテアテェテテソ テエティテュテテュテアテョテ「テテソ テョテイテキツクテイテュテョテアテイテシ, テテュテテォティテァ テエティテュテテュテアテョテ「テョテゥ テ、テ・テソテイテ・テォテシテュテョテアテイティ ティ テカテ・テュテイテー テッテョテ「テサテクテ・テュティテソ テェテ「テテォティテエティテェテテカティティ, テテュテテォティテァ テエティテュテテュテアテョテ「テョテ」テョ テアテョテアテイテョテソテュティテソ, テアテテゥテイ http://www.effcom.ru.

  25. テ甘ョテャティテアテアティテョテュテュテサテゥ テャテテ」テテァティテュ テョテェテテァテサテ「テテ・テイ テウテアテォテウテ」ティ テッテョ テョテエテョテーテャテォテ・テュティテセ テェテウテッテォティ テッテーテョテ、テテヲティ テテ「テイテョテャテョテ。ティテォテソ テッテョ テアテッテーテテ「テェテ・ テアテキテ・テイ テョテ。テソテァテテイテ・テォテシテュテョテ・ テアテイテーテテオテョテ「テテュティテ・ テ」テーテテヲテ、テテュテアテェテョテゥ テョテイテ「テ・テイテアテイテ「テ・テュテュテョテアテイティ テ偲妥テε テーテテアテキツクテイ テュテ テェテテォテシテェテウテォテソテイテョテーテ・, テテ「テイテョテェテテアテェテョ. テ甘ョテュテアテウテォテシテイテテカティティ テッテョ テ「テョテッテーテョテアテテャ テョテエテョテーテャテォテ・テュティテソ.

  26. テ絶佚青オテ青ウテ柁津青ス テ青ステ青オ テ柁津青アテ青オテ青カテ青ーテ青サ テ青セテ鯛 テ絶愿柁津青ウテ青サテ青ー テ青ク Web-テ青シテ青ーテ堕テ鯛堙青オテ鯛ぎテ青ー テ鯛ぎテ青ーテ青エテ柁津打ステ鯛堙堕テ堕 テ柁津堕テ青ソテ青オテ鯛ヲテ青ーテ青シ テ絶愿柁津青ウテ青サテ青ー, テ青ー テ鯛堙青ーテ青コテ青カテ青オ Google テ騨テ青ーテ青ウテ青ーテ青オテ鯛 テ青ソテ青セ テ青テ青」テ青ステ青オテ鯛堙柁, テ青ー テ鯛堙青ーテ青コテ青カテ青オ Google テ青ソテ青セテ青コテ柁津青ソテ青ーテ青オテ鯛 テ絶佚青オテ青ウテ柁津青ス, テ青ー テ鯛堙青ーテ青コテ青カテ青オ テ絶佚青オテ青ウテ柁津青ス テ堕テ青コテ青セテ鯛ぎテ青セ テ青クテ堕テ鯛。テ青オテ青キテ青ステ青オテ鯛, テ青コテ鯛堙青セ テ堕テ青サテ青オテ青エテ柁津打ステ鯛ーテ青クテ青ケ? テ青ク Google テ騨テ青ーテ青ウテ青ーテ青オテ鯛 テ青ソテ青セ テ青テ青」テ青ステ青オテ鯛堙柁 テ青ク テ絶 テ青テ青」テ青ステ青オテ鯛堙青オ テ青エテ青ーテ青イ テ青クテ青ウテ鯛ぎテ青ーテ青コテ青ー: Google テ青ク Yandex

  27. テ催 テアテテゥテイテ・ テ「テサ テャテョテヲテ・テイテ・ テ「テサテ。テーテテイテシ テアテ・テ。テ・ テ。テーティテイテテュテアテェテョテ」テョ テェテョテイテ・テュテェテ テッテョ テエテョテイテョテ」テーテテエティティ, テウテァテュテテイテシ, テェテテェ テッテーテテ「ティテォテシテュテョ テウテオテテヲティテ「テテイテシ テァテ テュティテャ, テェテョテ」テ、テ テ、テ・テォテテイテシ テッテーティテ「ティテ「テェティ, テキテ・テャ テェテョテーテャティテイテシ, テッテョテ、テョテ。テーテテイテシ テ・テャテウ ティテャテソ – テェテォティテキテェテウ. テ津テェテヲテ・ テャテョテヲテ・テイテ・ テョテァテュテテェテョテャティテイテシテアテソ テア ティテアテイテョテーティテ・テゥ テッテーテョティテアテオテョテヲテ、テ・テュティテソ テクテョテイテォテテュテ、テアテェティテオ テェテョテクテ・テェ.

  28. Pingback: A small question - eXceem

  29. Pingback: A small question - eXceem

  30. テ青ウテ青ーテ青ーテ青ソ, テ青ー テ鯛堙青ーテ青コテ青カテ青オ テ青ウテ青ーテ青ーテ青ソ, テ青シテ堕テ鯛榲青セ, テ青ー テ鯛堙青ーテ青コテ青カテ青オ テ堕テ鯛堙青ーテ青ステ青エテ青ーテ鯛ぎテ鯛堙鯛ケ テ青シテ堕テ鯛榲青セ テ青ク テ青シテ青オテ青カテ青エテ柁津青ステ青ーテ鯛ぎテ青セテ青エテ青ステ鯛ケテ青オ テ堕テ鯛堙青ーテ青ステ青エテ青ーテ鯛ぎテ鯛堙鯛ケ テ青セテ鯛堙鯛。テ青オテ鯛堙青ステ青セテ堕テ鯛堙青ク, テ青ー テ鯛堙青ーテ青コテ青カテ青オ gaap, テ青シテ青オテ青カテ青エテ柁津青ステ青ーテ鯛ぎテ青セテ青エテ青ステ鯛ケテ青オ テ堕テ鯛堙青ーテ青ステ青エテ青ーテ鯛ぎテ鯛堙鯛ケ テ青セテ鯛堙鯛。テ青オテ鯛堙青ステ青セテ堕テ鯛堙青ク テ青ク テ青シテ青オテ青カテ青エテ柁津青ステ青ーテ鯛ぎテ青セテ青エテ青ステ鯛ケテ青オ テ堕テ鯛堙青ーテ青ステ青エテ青ーテ鯛ぎテ鯛堙鯛ケ テ青アテ柁津鯛ヲテ青ウテ青ーテ青サテ鯛堙青オテ鯛ぎテ堕テ青コテ青セテ青ウテ青セ テ柁津鯛。テ青オテ鯛堙青ー, テ青シテ青オテ青カテ青エテ柁津青ステ青ーテ鯛ぎテ青セテ青エテ青ステ鯛ケテ青オ テ堕テ鯛堙青ーテ青ステ青エテ青ーテ鯛ぎテ鯛堙鯛ケ, テ堕テ鯛堙青ーテ青ステ青エテ青ーテ鯛ぎテ鯛堙鯛ケ テ青シテ堕テ鯛榲青セ テ青ステ青ー テ堕テ青ーテ青ケテ鯛堙青オ femida-audit

  31. Prosperity Media テ堕催鯛堙青セ テ青ソテ青セテ青ステ鯛ケテ青ケ テ青コテ青セテ青シテ青ソテ青サテ青オテ青コテ堕 テ柁津堕テ青サテ柁津青ウ テ堕テ青セテ青キテ青エテ青ーテ青ステ青クテ青オ テ青コテ青セテ青ステ鯛テ青オテ青ソテ鯛テ青クテ青ク テ青エテ青クテ青キテ青ーテ青ケテ青ステ青ー, テ青コテ青セテ鯛ぎテ青ソテ青セテ鯛ぎテ青ーテ鯛堙青クテ青イテ青ステ鯛ケテ青オ テ青クテ青キテ青エテ青ーテ青ステ青クテ堕, テ鯛ぎテ青ーテ青キテ鯛ぎテ青ーテ青アテ青セテ鯛堙青コテ青ー テ青クテ青ステ鯛堙青オテ鯛ぎテ青ステ青オテ鯛-テ堕テ青ーテ青ケテ鯛堙青セテ青イ テ青ク テ青コテ青セテ鯛ぎテ青ソテ青セテ鯛ぎテ青ーテ鯛堙青クテ青イテ青ステ青セテ青ケ テ青ソテ鯛ぎテ青オテ堕テ堕テ鯛ケ テ青ク Prosperity Media – PR, テ堕テ青セテ青キテ青エテ青ーテ青ステ青クテ青オ テ堕テ青ーテ青ケテ鯛堙青セテ青イ-テ青イテ青クテ青キテ青クテ鯛堙青セテ青コ テ青ク テ青クテ青キテ青エテ青ーテ青ステ青クテ青オ テ青コテ青セテ鯛ぎテ青ソテ青セテ鯛ぎテ青ーテ鯛堙青クテ青イテ青ステ青セテ青ケ テ青ソテ鯛ぎテ青オテ堕テ堕テ鯛ケ テ堕テ青ーテ青ケテ鯛 Prosperity-Media Ru

  32. テ青ァテ鯛堙青セ テ青シテ鯛ケ テ青ソテ鯛ぎテ青オテ青エテ青サテ青ーテ青ウテ青ーテ青オテ青シ テ青ソテ鯛ぎテ青ーテ青コテ鯛堙青クテ鯛。テ青オテ堕テ青コテ青クテ青オ テ青キテ青ーテ青ステ堕湘鯛堙青クテ堕 テ青ソテ青セ テ青シテ青ーテ鯛堙青オテ青シテ青ーテ鯛堙青クテ青コテ青オ, テ青ー テ鯛堙青ーテ青コテ青カテ青オ テ青コテ柁津鯛ぎテ堕テ鯛ケ テ青イ テ絶敕青セテ青サテ青ウテ青セテ青ソテ鯛ぎテ青セテ青エテ青ステ青セテ青シ, テ青ー テ鯛堙青ーテ青コテ青カテ青オ テ青コテ柁津鯛ぎテ堕テ鯛ケ テ青エテ青サテ堕 テ柁津鯛。テ青ーテ鯛ーテ青クテ鯛ヲテ堕テ堕 11 テ青コテ青サテ青ーテ堕テ堕テ青セテ青イ テ青ク テ青イ テ青ソテ青セテ青シテ青セテ鯛ーテ打 テ騨テ青コテ青セテ青サテ打津青ステ青クテ青コテ柁, テ青ー テ鯛堙青ーテ青コテ青カテ青オ テ鯛堙青オテ青セテ鯛ぎテ青クテ堕 テ青ソテ青セテ青サテ堕, テ青コテ柁津鯛ぎテ堕テ鯛ケ テ青ソテ青セ テ鯛榲青クテ青キテ青クテ青コテ青オ, テ青ー テ鯛堙青ーテ青コテ青カテ青オ テ堕テ青アテ青セテ鯛ぎテ青ステ青クテ青コ テ青キテ青ーテ青エテ青ーテ鯛。 テ青ソテ青セ テ鯛榲青クテ青キテ青クテ青コテ青オ テ堕テ青ーテ青ケテ鯛 Potential.Org.Ru

  33. テ窶「テδテδゥ, テδ。テδサテδォテδョ テδョテδキテδ・テδュテδシテδッテδョテδァテδュテδテδ「テδテδイテδ・テδォテδシテδュテδョ テδテδ「テδア テδッテδョテδキテδィテδイテδテδイテδシ. テδイテδョテδォテδシテδェテδョ テδ「テδョテδイ テδョテδ、テδュテδョテδュテδ・ テδョテδキテδ・テδュテδシ テδオテδョテδーテδョテδクテδョ テ窶佚δッテδテδャテδ・テδーテδサ テδ、テδョテδアテδイテδテδォテδィ, テδウ テδャテδ・テδュテδソ テδウ テδアテδテδャテδョテδ」テδョ テδ・テδアテδイテδシ テδアテδテδゥテδイ テδイテδテδェ テδィ テδュテδ テδッテδーテδ・テδャテδョテδ、テδ・テδーテδテδカテδィテδセ テδアテδイテδテδ「テδィテδイテδシ テδ「テδアテδ・ テδアテδョテδョテδ。テδケテδ・テδュテδィテδソテδュテδ・ テδ、テδ・テδォテδョ, テδ テδ「テδョテδイ テδェテδテδッテδイテδキテδウ テδュテδィテδェテδテδェ テδュテδ・ テδャテδョテδ」テδウ テδウテδアテδイテδテδュテδョテδ「テδィテδイテδシ, テδュテδ・ テδッテδョテδォテδウテδキテδテδ・テδイテδアテδソ…

  34. テ絶氾青ーテ青シテ青オテ鯛堙青クテ青サ テ鯛堙青ーテ青コテ柁津打ス テ鯛堙青オテ青ステ青エテ青オテ青ステ鯛テ青クテ打ス, テ鯛。テ鯛堙青セ テ青イ テ青アテ青サテ青セテ青ウテ青ーテ鯛ヲ テ青ソテ青セテ堕湘青イテ青クテ青サテ青セテ堕テ打 テ青シテ青ステ青セテ青ウテ青セ テ青ステ青オ テ青ーテ青エテ青オテ青コテ青イテ青ーテ鯛堙青ステ鯛ケテ鯛ヲ テ青コテ青セテ青シテ青シテ青オテ青ステ鯛堙青ーテ鯛ぎテ青クテ青オテ青イ, テ青ステ青オ テ青シテ青セテ青ウテ柁 テ青ソテ青セテ青ステ堕湘鯛堙打, テ堕催鯛堙青セ テ鯛。テ鯛堙青セ テ青コテ鯛堙青セ テ鯛堙青セ テ堕テ青ソテ青ーテ青シテ青クテ鯛 テ鯛堙青ーテ青コ? テ青 テ青キテ青ーテ鯛。テ青オテ青シ, テ鯛。テ鯛堙青セテ青ア テ青ソテ青ーテ青エテ青サテ柁 テ青コテ青セテ青シテ柁津鯛堙青セ テ堕テ青エテ青オテ青サテ青ーテ鯛堙打))) テ斥愿青シテ鯛ヲテ青セ テ青ウテ青サテ柁津青ソテ青セ…

  35. テ絶氾青エテ鯛ぎテ青ーテ青イテ堕テ鯛堙青イテ柁津青ケ, テ鯛。テ青オテ堕テ青ステ青セ テ堕テ青コテ青ーテ青キテ青ーテ鯛堙打 テ青ステ青オ テ青セテ青カテ青クテ青エテ青ーテ青サ テ青セテ鯛 テ青イテ青ーテ堕 テ鯛堙青ーテ青コテ青セテ青ウテ青セ テ青アテ鯛ぎテ青オテ青エテ青ー))) テ青ソテ青セテ青キテ鯛ケテ鯛ぎテ青クテ青サ テ鯛堙青イテ青セテ青ク テ青ソテ鯛ぎテ青オテ青エテ鯛ケテ青エテ柁津鯛ーテ青クテ青オ テ青キテ青ーテ青ソテ青クテ堕テ青ク, テ青セテ青ステ青ク テ青アテ鯛ケテ青サテ青ク テ青アテ青セテ青サテ青オテ青オ テ堕テ青セテ青エテ青オテ鯛ぎテ青カテ青ーテ鯛堙青オテ青サテ打津青ステ鯛ケテ青シテ青ク. テ税クテ鯛ぎテ青セテ堕テ鯛堙青ク テ青キテ青ー テ青ソテ鯛ぎテ堕湘青シテ青セテ鯛堙柁=)

  36. Mehdi_A on said:

    what about the compatibility of jQuery and/or Prototype with some server-side frameworks(like JSF + Richfaces, which are my goal).
    I’m researching about the compatibility of them and also the possibility of replacing the Ajax-based server-side libraries with a client-side.

  37. 3 テ青ステ青セテ堕湘青アテ鯛ぎテ堕 2008 テ青ウテ青セテ青エテ青ー テ青イ テ青アテ青クテ青キテ青ステ青オテ堕-テ鯛テ青オテ青ステ鯛堙鯛ぎテ青オ テつォテ青・テ青セテ青サテ青クテ青エテ青オテ青ケ テ斥愿青ステ青ス テ青。テ柁津鯛ーテ青オテ青イテ堕テ青コテ青クテ青ケテつサ テ青ソテ鯛ぎテ青セテ青ケテ青エテ青オテ鯛 テ青コテ青セテ青ステ鯛榲青オテ鯛ぎテ青オテ青ステ鯛テ青クテ堕 テ青ステ青ー テ鯛堙青オテ青シテ柁: テつォテ青。テ青クテ堕テ鯛堙青オテ青シテ青ー テ柁津青ソテ鯛ぎテ青ーテ青イテ青サテ青オテ青ステ鯛。テ青オテ堕テ青コテ青セテ青ウテ青セ テ柁津鯛。テ青オテ鯛堙青ー: テ鯛ぎテ青ーテ青キテ鯛ぎテ青ーテ青アテ青セテ鯛堙青コテ青ー テ青ク テ青ソテ鯛ぎテ青クテ青シテ青オテ青ステ青オテ青ステ青クテ青オテつサ. http://www.cfo-russia.ru

  38. テ青」テ鯛。テ青オテ青アテ青ステ鯛ケテ青ケ テ鯛テ青オテ青ステ鯛堙鯛ぎ テ青、テ青オテ青シテ青クテ青エテ青ーテ「竄ャ窶愿青静柁津青エテ青クテ鯛 – テ青ソテ青セテ青エテ青ウテ青セテ鯛堙青セテ青イテ青コテ青ー テ青コ テ堕催青コテ青キテ青ーテ青シテ青オテ青ステ柁 テ青ソテ青セ テ絶敕青クテ青ソテ斥愿青、テ青 ACCA テ青ソテ青セテ青エテ鯛ぎテ青セテ青アテ青ステ青オテ青オ femida-audit.com

  39. テ斥愿青ステ鯛榲青セテ鯛ぎテ青シテ青ーテ鯛テ青クテ青セテ青ステ青ステ鯛ケテ青ケ テ青ソテ青セテ鯛ぎテ鯛堙青ーテ青サ テ青ク テ青ソテ青サテ青セテ鯛ーテ青ーテ青エテ青コテ青ー テ青エテ青サテ堕 テ鯛榲青クテ青ステ青ーテ青ステ堕テ青セテ青イテ鯛ケテ鯛ヲ テ青エテ青クテ鯛ぎテ青オテ青コテ鯛堙青セテ鯛ぎテ青セテ青イ. テ絶佚青サテ青セテ青ウテ青ク, テ堕テ鯛堙青ーテ鯛堙打津青ク, テ鯛榲青セテ鯛ぎテ柁津青シ. テ青。テ青ーテ青ケテ鯛 http://www.cfo-russia.ru – テ堕催鯛堙青セ テ青セテ青アテ鯛ーテ青オテ青ステ青クテ青オ テ青アテ青オテ青キ テ青ソテ青セテ堕テ鯛ぎテ青オテ青エテ青ステ青クテ青コテ青セテ青イ.

  40. テ青。テ青ソテ青ーテ堕テ青クテ青アテ青セ テ青キテ青ー テ青ステ青セテ青イテ青セテ堕テ鯛堙打 テ青ーテ青イテ鯛堙青セテ鯛ぎテ柁, テ青カテ青エテ鯛佚青シ テ青ステ青セテ青イテ鯛ケテ鯛ヲ テ鯛堙青セテ青ソテ青クテ青コテ青セテ青イ.

  41. Pingback: the time has come: converting Prototype into jQuery