var UnobtrusiveLinker = Class.create({
initialize: function() {
this.options = Object.extend({
container: 'pagination_container',
selector: 'div.pagination a'
}, arguments[0] || {});
this.initLinks();
},
initLinks: function() {
$(this.options.container).select(this.options.selector).invoke('observe', 'click', this.linkHandler.bind(this));
},
linkHandler: function(event) {
event.stop();
new Ajax.Updater(this.options.container, event.element().getAttribute('href'),{
method: 'get',
onComplete: this.initLinks.bind(this)
});
}
});
def make_links_ajax(opts = [{}])
opts = [opts] if opts.is_a? Hash
ret = "document.observe('dom:loaded', function() { "
opts.each {|option| ret += "new UnobtrusiveLinker(#{option.to_json}); "}
ret + "});\n"
end
<%= make_links_ajax() %>
<%= make_links_ajax(:container => 'my_container', :selector => 'a.my_links') %>
<%= make_links_ajax([{:container => 'pagination_container', :selector => 'div.pagination a'}, {:container => 'another_container', :selector => 'a.another_link_class'}]) %>
Read more: http://feeds.dzone.com/~r/dzone/snippets/~3/wB_C9kJnjVM/12745