Top Banner
Lukas Renggli ESUG 2009, Brest for
57

jQuery for Seaside

Dec 25, 2014

Download

Technology

Lukas Renggli

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: jQuery for Seaside

Lukas RenggliESUG 2009, Brest

for

Page 2: jQuery for Seaside

‣ John Resig, jquery.com

‣ Lightweight, fast and concise

- Document traversing

- Event Handling

- AJAX Interaction

- Animating

Page 3: jQuery for Seaside

‣ High-level, themeable widgets on top of JQuery.

- Draggable- Droppable- Sortable- Selectable- Resizable - Accordion

- Datepicker- Dialog- Progressbar- Slider- Tabs

Page 4: jQuery for Seaside

T1ooousands of Plugins

Page 5: jQuery for Seaside

For Experts

Page 6: jQuery for Seaside

Forget about

$(document).ready(...)

Page 7: jQuery for Seaside

Don’t care about

“unobtrusive”

Page 8: jQuery for Seaside

For Experts

Page 9: jQuery for Seaside

Say it inSmalltalk

Page 10: jQuery for Seaside

FeatureComplete

Page 11: jQuery for Seaside

Up-to-date

Page 12: jQuery for Seaside

Everythingyou need to know

5 slidesonly

only 5slides

Page 13: jQuery for Seaside

Query + Action

Page 14: jQuery for Seaside

Query + Action

Find DOM

elements

Page 15: jQuery for Seaside

Query + Action

Find DOM

elements

Perform an action

Page 16: jQuery for Seaside

Create a Query

html jQuery: ‘.special’

Page 17: jQuery for Seaside

Create a Query

html jQuery: ‘.special’

Query Languageis CSS

Page 18: jQuery for Seaside

Create a Query

html jQuery: ‘.special’

Smalltak proxy objectJQueryInstanceQuery Language

is CSS

Page 19: jQuery for Seaside

Perform an Action

(html jQuery: ‘div.special’) remove

Page 20: jQuery for Seaside

Perform an Action

(html jQuery: ‘div.special’) remove

... and 180 other(well documented)

actions

Page 21: jQuery for Seaside

Attaching to Element

html anchor onClick: (html jQuery: ‘div’) remove; with: ‘Remove’

Page 22: jQuery for Seaside

Attaching to Element

html anchor onClick: (html jQuery: ‘div’) remove; with: ‘Remove’

(html jQuery this)

Shortcut, seeJQueryClass

Page 23: jQuery for Seaside

At Load-Time

html document addLoadScript: (html jQuery: ‘div’) remove

Page 24: jQuery for Seaside

Query Examples

Page 25: jQuery for Seaside

$(“div.hint”)

html jQuery expression: ‘div.hint’

html jQuery: ‘div.hint’

Page 26: jQuery for Seaside

$(“#foo”)

html jQuery id: ‘foo’

html jQuery: #foo

Page 27: jQuery for Seaside

$(“*”)

html jQuery expression: ‘*’

html jQuery all

Page 28: jQuery for Seaside

$(this)

html jQuery this

html jQuery new

Page 29: jQuery for Seaside

Refine Queries

Page 30: jQuery for Seaside

Siblings

aQuery siblingsaQuery siblings: ‘div’

Page 31: jQuery for Seaside

Next Siblings

aQuery nextaQuery next: ‘div’

aQuery nextAllaQuery nextAll: ‘div’

Page 32: jQuery for Seaside

Previous Siblings

aQuery previousaQuery previous: ‘div’

aQuery prevAllaQuery prevAll: ‘div’

Page 33: jQuery for Seaside

Children

aQuery childrenaQuery children: ‘div’

aQuery contentsaQuery find: ‘div’

Page 34: jQuery for Seaside

Parent

aQuery parentaQuery parent: ‘div’

aQuery parentsaQuery parents: ‘div’

aQuery closestaQuery closest: ‘div’

Page 35: jQuery for Seaside

Perform Actions

Page 36: jQuery for Seaside

Classes

aQuery addClass: ‘foo’aQuery removeClass: ‘foo’aQuery toggleClass: ‘foo’

aQuery hasClass: ‘foo’

Page 37: jQuery for Seaside

Attributes

aQuery attributes: aDictionaryaQuery attributeAt: ‘href’

aQuery attributeAt: ‘href’ put: ‘#’aQuery removeAttribute: ‘href’

Page 38: jQuery for Seaside

Styles

aQuery css: aDictionaryaQuery cssAt: ‘color’

aQuery cssAt: ‘color’ put: ‘#ff0’

Page 39: jQuery for Seaside

Contents

aQuery html: [ :r | r div ]aQuery value: ‘some value’

aQuery text: ‘some text’

Page 40: jQuery for Seaside

Insert Contents

aQuery before: [ :r | r div ]aQuery prepend: [ :r | r div ]aQuery append: [ :r | r div ]

aQuery after: [ :r | r div ]

Page 41: jQuery for Seaside

Replace Contents

aQuery replaceWith: [ :r | r div ]aQuery wrap: [ :r | r div ]

aQuery wrapAll: [ :r | r div ]aQuery wrapInner: [ :r | r div ]

Page 42: jQuery for Seaside

Animations

aQuery showaQuery show: 1 second

aQuery hideaQuery hide: 1 second

Page 43: jQuery for Seaside

Events

aQuery onClick: ‘alert(“Hello”)’aQuery on: ‘click’ do: ‘alert(“Hello”)’

aQuery on: ‘click’ once: ‘alert(“Hello”)’

aQuery trigger: ‘click’

Page 44: jQuery for Seaside

AJAX

Page 45: jQuery for Seaside

AJAX

aQuery load html: [ :r | r div: Time now ]

Page 46: jQuery for Seaside

No Query

html jQuery ajax

Page 47: jQuery for Seaside

Generators

anAjax html: [ :r | r div ]anAjax script: [ :s | s alert: ‘Hello’ ]

Page 48: jQuery for Seaside

Triggering Callbacks

anAjax serialize: aQueryanAjax trigger: [ :p | ... ] passengers: aQuery

anAjax callback: [ :v | ... ] value: anObject

Page 49: jQuery for Seaside

More Information

Page 50: jQuery for Seaside

JQuery Docs

docs.jquery.com

Page 51: jQuery for Seaside

Functional Tests

/seaside/tests/jquery/seaside/tests/jquery-ui

Page 52: jQuery for Seaside

File Libraries

JQDevelopmentLibrary JQuery – Full

JQDeploymentLibrary JQuery – Compressed

JQGoogleLibrary JQuery – Google

JQUiDevelopmentLibrary JQuery UI – Full

JQUiDeploymentLibrary JQuery UI – Compressed

JQUiGoogleLibrary JQuery UI – Google

Page 53: jQuery for Seaside

How To

Page 54: jQuery for Seaside

Click and Show

html anchor onClick: (html jQuery: 'div.help') toggle; with: 'About jQuery'.

html div class: 'help'; style: 'display: none'; with: 'jQuery is a fast and ...'

Page 55: jQuery for Seaside

Replace a Component

html div id: (id := html nextId); with: child.

html anchor onClick: ((html jQuery id: id) load html: [ :r | child := OtherComponent new; r render: child ]); with: ‘Change Component’

Page 56: jQuery for Seaside

Update Multiple Elements

html div id: #date.html div id: #time.

html anchor onClick: (html jQuery ajax script: [ :s | s << (s jQuery: #date) html: [ :r | r render: Date today ]. s << (s jQuery: #time) html: [ :r | r render: Time now ] ]); with: ‘Update’

Page 57: jQuery for Seaside

Display a Lightbox

| id |html div id: (id := html nextId); script: (html jQuery new dialog title: 'Lightbox Dialog'; overlay: (Dictionary new at: 'background-color' put: '#000'; at: 'opacity' put: 0.75; yourself); modal: true); with: [ self renderDialogOn: html ]html anchor onClick: (html jQuery id: id) dialog open; with: 'Open Lightbox'