jQuery SuperLoad
An important part of working with jQuery is to create plugins to simplify repetitive tasks. I write jQuery plugins all the time for internal consumption of my applications.
Most of them are not of enough general purpose to be shared publicly. Recently I created one that could stand on its own and I chose to make it available if anyone is interested.
Multiple Element Ajax Updates
jQuery SuperLoad came out of the necessity to update more than one element in a page without needing to do everything with JavaScript (and you know I'm not the one that avoids JavaScript).
All of the page elements I needed to update with Ajax came from
page segments (partials, user controls, etc) that I had available on
my server side. It seemed appropriate to go back to the server to
get updated versions of that same HTML. But I didn't want to issue a
separate $.ajax()
or $(elem).load
for each one of them.
Using SuperLoad I can now return something like the following from my server application and have more than one element updated.
<div class="ajax-content"> <div title="!appendTo #content .shoppingList"> <li> <img src="/images/prod12345.png" class="product-image"> <div class="prodSummary"> <div class="prodTitle">ACME Product</div> <div class="prodPrice">$12.34</div> </div> </li> </div> <div title="!update #orderTotal"> Total: <span class="totalPrice">$47.22</span> <div class="specialOffer">Eligible for free shipping!</div> </div> <script> $('#orderTotal specialOffer').effect('highlight'); </script> </div>
All that is needed for this to be correctly applied to the right
elements (selected by "#content .shoppingList"
and "#orderTotal"
is a line of code similar to this example.
$.superLoad({ url: '/shopping/addItem', type: 'POST', data: {product: 12345} });
Check the plugin source code comments or the github repository page for more details.