[Seaside] jQuery questions
renggli at gmail.com
Sat Oct 9 21:00:47 UTC 2010
> 1) In CTReport>>renderContentOn: there is some code that binds 'refresh' to
> html table
> script: (html jQuery this
> bind: 'refresh' do: (html jQuery this load
> html: [ :h | self renderTableOn: h ]));
> what does the message #this do?
This returns a JQueryInstance that refers to the current DOM element
(see the method comment), i.e. the table.
> Obviously the html: portion is the action taken, which re-renders the table.
Exactly, the inner part of the table.
> 2) In CTReport>>renderRowView:on: there is an anchor created with an
> onClick: script:
> html tableData: [
> html anchor
> url: '#';
> " replace the owning row with an editable row "
> onClick: ((html jQuery this closest: 'tr') load
> html: [ :r | self renderRowEdit: anItem on: r
> with: 'edit' ]
> What does '((html jQuery this closest: 'tr') load' do?
#this refers to the current DOM element (see the method comment), i.e.
#closest: walks outwards in the DOM tree to find the closes matching
element (see the method comment), i.e. the current row.
#load performs an AJAX action (see the method comment), i.e. it
replaces the contents of the matched elements with
> What does 'html jQuery ajax script:' do? In the script it looks like it
> grabs the 'table' (although I don't see where the table was named) and
> appends a tableRow.
'table' is a CSS selector, it just appends the list to all tables on
the current page. Cleaner would be to give it a name or navigate to it
through this DOM node, but in this simple example I assume that there
is only one table.
> Ditto on 'jQuery ajax'?
This is an AJAX request (see the method comment and look for senders
to see other examples).
> What does 'serialize: ((html jQuery this closest:
> 'table') find: ':input');' do?
It serializes and triggers the callbacks of all the input-fields in
this table. Again, see the method comments of the respective messages.
> Clearly the trigger: 'refresh' is sent to
> all pages the pusher knows about, right?
This triggers the refresh event that was bound in your first question.
More information about the seaside