SlideShare a Scribd company logo
1 of 73
A jQuery Primer for SharePoint
What is jQuery?




      is
GETTING STARTED
Getting Started

• Add references to the jQuery library
  – Master page
  – Page layout
  – Individual aspx pages
Referencing Script Libraries from CDNs
<!-- Reference the jQueryUI theme's stylesheet on the Google
CDN. Here we're using the "start" theme -->
<link type="text/css" rel="stylesheet"
href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/theme
s/start/jquery-ui.css" />
<!-- Reference jQuery on the Google CDN -->
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.mi
n.js"></script>
<!-- Reference jQueryUI on the Google CDN -->
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery
-ui.min.js"></script>
<!-- Reference SPServices on cdnjs (Cloudflare) -->
<script type="text/javascript"
src="http://cdnjs.cloudflare.com/ajax/libs/jquery.SPServices/0.7
.1a/jquery.SPServices-0.7.1a.min.js"></script>

More: http://sympmarc.com/2012/04/20/referencing-jquery-jqueryui-and-spservices-from-cdns/
SharePoint Web Technology

• HTML
  – Hypertext Markup Language
  – Content and structure

• CSS
  – Cascading Style Sheets
  – Presentation and style

• JavaScript and jQuery
  – Interactive behavior
HTML Elements

           Opening tag                          Closing tag



Powered by <a href="http://office365.com">Office365</a>.


            Attribute       Value
INTRO TO CSS
Intro to CSS:
          Why does CSS matter?
• CSS = Cascading Style Sheets
• jQuery uses selectors that are very similar
  to CSS selectors
• CSS is the fundamental styling
  mechanism for the Web
• HTML + CSS + jQuery = AWESOME
CSS Styles


Select HTML element(s)       .article {
         Modify them!           color: red;
                             }
CSS Element Selectors

p {                  <p>
    color: red;         Paragraph of text.
}                    </p>




           Paragraph of text.
CSS Class Selectors

.article {             <div class="article">
    color: red;           This is an article.
}                      </div>




             This is an article.
CSS ID Selectors

#header {             <div id="header">
    color: red;          This is a header.
}                     </div>




            This is a header.
CSS Descendant Selectors

#header h1 {        <div id="header">
                       <h1>
    color: red;
                         This is a header.
}                      </h1>
                    </div>




           This is a header.
CSS Composite Selectors
#header ul.top-nav li {        <div id="header">
    color: red;                  <ul class="top-nav">
}                                   <li>Item 1</li>
                                    <li>Item 2</li>
                                    <li>Item 3</li>
                                 </ul>
                               </div>

                    • Item 1
                    • Item 2
                    • Item 3
CSS Complex Selectors
ul.top-nav > li {              <ul class="top-nav">
                                  <li>Item 1</li>
    color: red;                   <li>
}                                    Item 2
                                     <ul class="menu">
                                        <li>Menu 1</li>
                                     </ul>
                                  </li>
                               </ul>



                    • Item 1
                    • Item 2
                      • Menu 1
My CSS "Best" Practices

• Use truly unique class and id names
• Choose a prefix for your project, e.g. „xyz-‟
  or „x51-‟
• All of your classes and ids will be easy to
  select:
     xyz-home-page-article
     x51-top-section
• Don‟t be afraid of verbose class and ID
  names!
DOCUMENT OBJECT MODEL
(DOM)
What is the Document Object Model
                 (DOM)?
• The DOM starts as the page‟s markup
  (HTML) as delivered to the browser by the
  server: View Source
• Styled by the CSS which gives the page
  its the look and feel
• The DOM is acted upon by any script in
  the page
What Can We Do With the DOM?

•   Add or remove CSS classes
•   Create new HTML elements
•   Remove HTML elements
•   Change HTML element attributes
•   And so much more

       The DOM is HTML, which is
          XML, which is data!
IMPORTANT TOOLS
Internet Explorer Developer Tools (F12)

• Shows the Internet Explorer view of
  SharePoint‟s pages – some pages are
  rendered differently in other browsers
The Firebug Add-On for Firefox

• Better for debugging and looking at Net
  traffic
JQUERY BASICS
The Basic Idea of jQuery

     Select something




$('.article').hide();
                        Do something!
jQuery’s Document Ready

$(document).ready(function({
  // do something
});

• Processing is suspended until the page‟s
  DOM is fully loaded
• Ensures that all of the elements you need
  are available
jQuery Documentation: Your Friend


• The jQuery documentation is
  arranged to help you
• What you need to know is
  arranged sequentially from
  top to bottom
SELECTORS
jQuery Selectors

• Selectors are the most important jQuery
  concept
• Selecting the right DOM object(s) is half
  the battle
• Selectors return a collection of DOM
  objects – 1 to n matching elements
jQuery Element Selectors

   <p>
      Paragraph of text.
   </p>



          $("p")
jQuery Element Selectors
          <p>Paragraph 1 of text.</p>
          <p>Paragraph 2 of text.</p>




        var allParagraphs = $("p");

allParagraphs is now defined as a jQuery object
which contains pointers to all paragraphs in the page
jQuery Class Selectors
<div class="article">
   This is an article.
</div>




      $(".article")
jQuery ID Selectors
<div id="header">
   This is a header.
</div>




       $("#header")
jQuery Descendant Selectors
  <div id="header">
     <h1>
       This is a header.
     </h1>
  </div>




        $("#header h1")
jQuery Composite Selectors
 <div id="header">
    <ul class="top-nav">
       <li>Item 1</li>
       <li>Item 2</li>
       <li>Item 3</li>
    </ul>
 </div>



  $("#header ul.top-nav li")
jQuery Complex Selectors
<ul class="top-nav">
   <li>Item 1</li>
   <li>
      Item 2
      <ul class="menu">
         <li>Menu 1</li>
      </ul>
   </li>
</ul>


 $("#header ul.top-nav li")
Selectors for SharePoint

<DIV class=ms-quicklaunchheader>
  <A accessKey=3
id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll
href="/Intranet/JQueryLib/_layouts/viewlsts.aspx">
    View All Site Content
  </A>
</DIV>



     $("div.ms-quicklaunchheader")
Selectors for SharePoint

<DIV class=ms-quicklaunchheader>
  <A accessKey=3
id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll
href="/Intranet/JQueryLib/_layouts/viewlsts.aspx">
    View All Site Content
  </A>
</DIV>



$("#ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll")
Selectors for SharePoint

<DIV class=ms-quicklaunchheader>
  <A accessKey=3
id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll
href="/Intranet/JQueryLib/_layouts/viewlsts.aspx">
    View All Site Content
  </A>
</DIV>



           $("a[id$='NavLinkViewAll']")
Useful jQuery Selector Tricks
• .NET Applications like SharePoint generate some long
  and ugly markup and IDs
• These selector tricks really help
        $("[id='foo']");    //   Equal to
        $("[id!='foo']");   //   Not equal to
        $("[id^='foo']");   //   Starts with
        $("[id$='foo']");   //   Ends with
        $("[id*='foo']");   //   Contains
        $("[id~='foo']");   //   Contains word
        $("[id|='foo']");   //   Contains prefix

        $("[id]"); // Has
        $("[id][class][style]"); // Has all
ATTRIBUTES
jQuery Attributes

• Once you‟ve selected the right DOM
  element, you can use jQuery to get or set
  its attributes
• As of jQuery 1.6, the .prop() method
  provides a way to explicitly retrieve
  property values, while .attr() retrieves
  attributes
jQuery Attributes: Get and Set
 <div id="helloDiv" class="ms-bold">
     Hello, world!
 </div>




GET: var thisClass = $("#helloDiv").attr("class");
SET: $("#helloDiv").attr("class", "ms-hidden");
Example with SharePoint Attributes: Get

 <DIV class=ms-quicklaunchheader>
   <A accessKey=3
 id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll
 href="/Intranet/JQueryLib/_layouts/viewlsts.aspx">
     View All Site Content
   </A>
 </DIV>


var thisKey = $("a[id$='NavLinkViewAll']").attr("accessKey");
Example with SharePoint Attributes: Set

 <DIV class=ms-quicklaunchheader>
   <A accessKey=99
 id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll
 href="/Intranet/JQueryLib/_layouts/viewlsts.aspx">
     View All Site Content
   </A>
 </DIV>



$("a[id$='NavLinkViewAll']").attr("accessKey", 99);
TRAVERSING
Traversing

• Traversing lets you move around the DOM
  based on your initial selection
• This is how you get at elements which are
  difficult to select directly
• Ancestry matters in XML / HTML
Find an Element’s Ancestors
<div id="helloDiv" class="ms-bold">
  <ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
  </ul>
</div>



$("ul").parent();
$("ul").closest("div");
Traversing Down:
   Find an Element’s Specific Children
<DIV class=ms-quicklaunchheader>
  <A accessKey=3
id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll
href="/Intranet/JQueryLib/_layouts/viewlsts.aspx">
    View All Site Content
  </A>
</DIV>



 $("div.ms-quicklaunchheader").find("a");
Traversing Down:
   Find an Element’s Specific Children
<DIV class=ms-quicklaunchheader>
  <A accessKey=3
id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll
href="/Intranet/JQueryLib/_layouts/viewlsts.aspx">
    View All Site Content
  </A>
</DIV>



 $("div.ms-quicklaunchheader").find("a");
SharePoint Example of Traversing:
             Initial Selector
<DIV class=ms-quicklaunchheader>
  <A accessKey=3
id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll
href="/Intranet/JQueryLib/_layouts/viewlsts.aspx">
    View All Site Content
  </A>
</DIV>



 $("a[id$='NavLinkViewAll']").parent();
SharePoint Example of Traversing:
             Finding Parent
<DIV class=ms-quicklaunchheader>
  <A accessKey=3
id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll
href="/Intranet/JQueryLib/_layouts/viewlsts.aspx">
    View All Site Content
  </A>
</DIV>



 $("a[id$='NavLinkViewAll']").parent();
Traversal Example from SPServices
                      SelectCandidate                  SelectResult




<select                                         <select
name="ctl00$m$g_e845e690_00da_428f_afbd_fbe80   name="ctl00$m$g_e845e690_00da_428f_afbd_fbe8047
4787763$ctl00$ctl04$ctl07$ctl00$ctl00$ctl04$c   87763$ctl00$ctl04$ctl07$ctl00$ctl00$ctl04$ctl00
var possibleValues =
tl00$ctl00$SelectCandidate" title="City         $ctl00$SelectResult" title="City selected
                                                values"
possible values"
$("select[ID$='SelectCandidate'][Title^='" +
id="ctl00_m_g_e845e690_00da_428f_afbd_fbe8047   id="ctl00_m_g_e845e690_00da_428f_afbd_fbe804787
87763_ctl00_ctl04_ctl07_ctl00_ctl00_ctl04_ctl   763_ctl00_ctl04_ctl07_ctl00_ctl00_ctl04_ctl00_c
opt.multiSelectColumn + " ']");
00_ctl00_SelectCandidate" style="width:         tl00_SelectResult" style="width: 162px;"
var selectedValues =
162px;" onkeydown="GipHandleHScroll(event)"     onkeydown="GipHandleHScroll(event)"
                                                ondblclick="GipRemoveSelectedItems(ctl00_m_g_e8
ondblclick="GipAddSelectedItems(ctl00_m_g_e84
possibleValues.closest("span").find("select[ID$='SelectResult
5e690_00da_428f_afbd_fbe804787763_ctl00_ctl04   45e690_00da_428f_afbd_fbe804787763_ctl00_ctl04_
_ctl07_ctl00_ctl00_ctl04_ctl00_ctl00_MultiLoo   ctl07_ctl00_ctl00_ctl04_ctl00_ctl00_MultiLookup
'][Title^='" + opt.multiSelectColumn + " ']");
kupPicker_m); return false"                     Picker_m); return false"
onchange="GipSelectCandidateItems(ctl00_m_g_e   onchange="GipSelectResultItems(ctl00_m_g_e845e6
845e690_00da_428f_afbd_fbe804787763_ctl00_ctl   90_00da_428f_afbd_fbe804787763_ctl00_ctl04_ctl0
04_ctl07_ctl00_ctl00_ctl04_ctl00_ctl00_MultiL   7_ctl00_ctl00_ctl04_ctl00_ctl00_MultiLookupPick
ookupPicker_m);" size="350" multiple="">        er_m);" size="20" multiple="">
MANIPULATION
Manipulation

• Once you‟ve gotten the right element(s),
  you can manipulate their attributes or
  properties
• You can also change their contents
Manipulation:
                Adding Text
<div id="helloDiv" class="ms-bold">
  Hello, world!
</div>


$("#helloDiv").append("And you're welcome to it!");



<div id="helloDiv" class="ms-bold">
  Hello, world! And you're welcome to it!
</div>
Manipulation:
            Adding CSS Classes
<div id="helloDiv" class="ms-bold">
  Hello, world!
</div>


$("#helloDiv").addClass("my-class");




<div id="helloDiv" class="ms-bold my-class">
  Hello, world!
</div>
Manipulation:
             Wrapping Elements
<div id="helloDiv" class="ms-bold">
  Hello, world!
</div>

$("#helloDiv")
  .wrap("<a href='http://cnn.com'></a>");



<a href="http://cnn.com">
  <div id="helloDiv" class="ms-bold">
     Hello, world!
  </div>
</a>
Manipulation:
             Inserting Elements
<div id="helloDiv" class="ms-bold">
  Hello, world!
</div>


$("#helloDiv")
  .before("<div>This is a new div.</div>");




<div>This is a new div.</div>
<div id="helloDiv" class="ms-bold">
  Hello, world!
</div>
Manipulation:
                Changing CSS
<div id="helloDiv" class="ms-bold">
  Hello, world!
</div>



$("#helloDiv").css("background-color", "fuchsia");




$("#helloDiv").css({
  border: "1px black solid",
  color: "red"
});
EVENTS
Events

• jQuery‟s events enable you to work with all
  of the standard JavaScript events
• These methods are used to register
  behaviors to take effect when the user
  interacts with the browser, and to further
  manipulate those registered behaviors.
jQuery Events
$('.article').click(function(){
  // do something
});

$('.article').mouseover(function(){
  // do something
});
jQuery Events
$("h3.ms-WPTitle").click(function() {
  alert("You'll now be taken directly to the list.");
});

$("h3.ms-WPTitle").mouseover(function() {
 $("#helloDiv").css("background-color", "fuchsia");
});
EFFECTS
Effects

• jQuery gives you a set of effects you can
  use to change the elements in the page
• Effects can be:
  – Visual: Change how the user sees existing
    elements with animations
  – Manipulative: Change where and how
    elements are shown by moving them around
    in the DOM
jQuery Effects Examples
$('.article').hide();
$('.article').slideUp();
$('.article').after('<em>Hello!</em>');
$('.article').css('color', 'red');
Putting It Together: Example

• This example changes what happens when
  you click on a Web Part Title.
// Remove the links on the Web Part Titles
$("h3.ms-WPTitle").find("nobr").unwrap("<a></a>");

// Add click behavior that toggles the visibility
// of the Web Part
$("h3.ms-WPTitle").click(function() {
  $(this).closest("table").closest("tr").next().toggle();
});
Putting It Together: Example
• This example shows part of SPArrangeChoices from
  SPServices.
// Collect all of the choices
$(thisFormField).find("tr").each(function() {
    columnOptions.push($(this).html());
});
out = "<TR>";

// Add all of the options to the out string
for(i=0; i < columnOptions.length; i++) {
    out += columnOptions[i];
    // If we've already got perRow columnOptions in the row, close off the row
    if((i+1) % opt.perRow === 0) {
           out += "</TR><TR>";
    }
}
out += "</TR>";

// Remove the existing rows...
$(thisFormField).find("tr").remove();
// ...and append the out string
$(thisFormField).find("table").append(out);
jQueryUI Takes Effects Further


$('.article').tabs();
$('input').autocomplete();
$('#infoBox').dialog();

…and many more
jQuery Plugins Abound!

• If you want to do something sophisticated,
  look for an existing plugin
• Do some due diligence – some of the
  plugins aren‟t written very well
• Beware of “plugin sprawl”
More Useful Tools

• JavaScript Compressorator – Minifies
  script files using multiple methods
  http://compressorrater.thruhere.net/
• JSLint – Checks your script against
  accepted standards http://jslint.com/
  “Warning: JSLint will hurt your feelings.”
Contact Information
                     eMail marc.anderson@sympraxisconsulting.com
                      Blog http://sympmarc.com
              SPServices http://spservices.codeplex.com
                  SPXSLT http://spxslt.codeplex.com
         USPJA Academy http://uspja.com
                    eBook http://bit.ly/UnlockingDVWP
The Middle Tier Manifesto http://bit.ly/middletier

More Related Content

What's hot

SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsMark Rackley
 
J query presentation
J query presentationJ query presentation
J query presentationakanksha17
 
Templates
TemplatesTemplates
Templatessoon
 
fuser interface-development-using-jquery
fuser interface-development-using-jqueryfuser interface-development-using-jquery
fuser interface-development-using-jqueryKostas Mavridis
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQueryGunjan Kumar
 
Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web ComponentsFelix Arntz
 
jQuery: Nuts, Bolts and Bling
jQuery: Nuts, Bolts and BlingjQuery: Nuts, Bolts and Bling
jQuery: Nuts, Bolts and BlingDoug Neiner
 
Django workshop : let's make a blog
Django workshop : let's make a blogDjango workshop : let's make a blog
Django workshop : let's make a blogPierre Sudron
 
FFW Gabrovo PMG - jQuery
FFW Gabrovo PMG - jQueryFFW Gabrovo PMG - jQuery
FFW Gabrovo PMG - jQueryToni Kolev
 
Test automation with selenide
Test automation with selenideTest automation with selenide
Test automation with selenideIsuru Madanayaka
 
FFW Gabrovo PMG - JavaScript 1
FFW Gabrovo PMG - JavaScript 1FFW Gabrovo PMG - JavaScript 1
FFW Gabrovo PMG - JavaScript 1Toni Kolev
 
WAI-ARIA - an introduction to accessible rich internet applications (1 day wo...
WAI-ARIA - an introduction to accessible rich internet applications (1 day wo...WAI-ARIA - an introduction to accessible rich internet applications (1 day wo...
WAI-ARIA - an introduction to accessible rich internet applications (1 day wo...Patrick Lauke
 
Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology
Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology
Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology Ayes Chinmay
 
Jquery In Rails
Jquery In RailsJquery In Rails
Jquery In Railsshen liu
 

What's hot (19)

SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
 
jquery
jqueryjquery
jquery
 
J query presentation
J query presentationJ query presentation
J query presentation
 
Templates
TemplatesTemplates
Templates
 
Learn css3
Learn css3Learn css3
Learn css3
 
Jquery
JqueryJquery
Jquery
 
DirectToWeb 2.0
DirectToWeb 2.0DirectToWeb 2.0
DirectToWeb 2.0
 
fuser interface-development-using-jquery
fuser interface-development-using-jqueryfuser interface-development-using-jquery
fuser interface-development-using-jquery
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
JQuery
JQueryJQuery
JQuery
 
Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web Components
 
jQuery: Nuts, Bolts and Bling
jQuery: Nuts, Bolts and BlingjQuery: Nuts, Bolts and Bling
jQuery: Nuts, Bolts and Bling
 
Django workshop : let's make a blog
Django workshop : let's make a blogDjango workshop : let's make a blog
Django workshop : let's make a blog
 
FFW Gabrovo PMG - jQuery
FFW Gabrovo PMG - jQueryFFW Gabrovo PMG - jQuery
FFW Gabrovo PMG - jQuery
 
Test automation with selenide
Test automation with selenideTest automation with selenide
Test automation with selenide
 
FFW Gabrovo PMG - JavaScript 1
FFW Gabrovo PMG - JavaScript 1FFW Gabrovo PMG - JavaScript 1
FFW Gabrovo PMG - JavaScript 1
 
WAI-ARIA - an introduction to accessible rich internet applications (1 day wo...
WAI-ARIA - an introduction to accessible rich internet applications (1 day wo...WAI-ARIA - an introduction to accessible rich internet applications (1 day wo...
WAI-ARIA - an introduction to accessible rich internet applications (1 day wo...
 
Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology
Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology
Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology
 
Jquery In Rails
Jquery In RailsJquery In Rails
Jquery In Rails
 

Viewers also liked

Getting started with Office 365 APIs
Getting started with Office 365 APIsGetting started with Office 365 APIs
Getting started with Office 365 APIsLuis Valencia
 
SharePoint Add-Ins - the Next Level
SharePoint Add-Ins - the Next LevelSharePoint Add-Ins - the Next Level
SharePoint Add-Ins - the Next LevelPaul Schaeflein
 
Developing Apps for SharePoint Store
Developing Apps for SharePoint StoreDeveloping Apps for SharePoint Store
Developing Apps for SharePoint StoreKashif Imran
 
SPTechCon SFO 2014 - Creating a Great User Experience in SharePoint
SPTechCon SFO 2014 - Creating a Great User Experience in SharePointSPTechCon SFO 2014 - Creating a Great User Experience in SharePoint
SPTechCon SFO 2014 - Creating a Great User Experience in SharePointMarc D Anderson
 
SPTechCon SFO 2014 - Create a Business Solution, Step by Step, with No Manage...
SPTechCon SFO 2014 - Create a Business Solution, Step by Step, with No Manage...SPTechCon SFO 2014 - Create a Business Solution, Step by Step, with No Manage...
SPTechCon SFO 2014 - Create a Business Solution, Step by Step, with No Manage...Marc D Anderson
 
Sharepoint 2013-applied architecture from the field v3 (public)
Sharepoint 2013-applied architecture from the field v3 (public)Sharepoint 2013-applied architecture from the field v3 (public)
Sharepoint 2013-applied architecture from the field v3 (public)Tihomir Ignatov
 
Building SharePoint 2013 Apps - Architecture, Authentication & Connectivity API
Building SharePoint 2013 Apps - Architecture, Authentication & Connectivity APIBuilding SharePoint 2013 Apps - Architecture, Authentication & Connectivity API
Building SharePoint 2013 Apps - Architecture, Authentication & Connectivity APISharePointRadi
 

Viewers also liked (7)

Getting started with Office 365 APIs
Getting started with Office 365 APIsGetting started with Office 365 APIs
Getting started with Office 365 APIs
 
SharePoint Add-Ins - the Next Level
SharePoint Add-Ins - the Next LevelSharePoint Add-Ins - the Next Level
SharePoint Add-Ins - the Next Level
 
Developing Apps for SharePoint Store
Developing Apps for SharePoint StoreDeveloping Apps for SharePoint Store
Developing Apps for SharePoint Store
 
SPTechCon SFO 2014 - Creating a Great User Experience in SharePoint
SPTechCon SFO 2014 - Creating a Great User Experience in SharePointSPTechCon SFO 2014 - Creating a Great User Experience in SharePoint
SPTechCon SFO 2014 - Creating a Great User Experience in SharePoint
 
SPTechCon SFO 2014 - Create a Business Solution, Step by Step, with No Manage...
SPTechCon SFO 2014 - Create a Business Solution, Step by Step, with No Manage...SPTechCon SFO 2014 - Create a Business Solution, Step by Step, with No Manage...
SPTechCon SFO 2014 - Create a Business Solution, Step by Step, with No Manage...
 
Sharepoint 2013-applied architecture from the field v3 (public)
Sharepoint 2013-applied architecture from the field v3 (public)Sharepoint 2013-applied architecture from the field v3 (public)
Sharepoint 2013-applied architecture from the field v3 (public)
 
Building SharePoint 2013 Apps - Architecture, Authentication & Connectivity API
Building SharePoint 2013 Apps - Architecture, Authentication & Connectivity APIBuilding SharePoint 2013 Apps - Architecture, Authentication & Connectivity API
Building SharePoint 2013 Apps - Architecture, Authentication & Connectivity API
 

Similar to SharePointfest Denver - A jQuery Primer for SharePoint

Advanced JQuery Mobile tutorial with Phonegap
Advanced JQuery Mobile tutorial with Phonegap Advanced JQuery Mobile tutorial with Phonegap
Advanced JQuery Mobile tutorial with Phonegap Rakesh Jha
 
Introduction to jquery mobile with Phonegap
Introduction to jquery mobile with PhonegapIntroduction to jquery mobile with Phonegap
Introduction to jquery mobile with PhonegapRakesh Jha
 
SEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePointSEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePointMarc D Anderson
 
Intro to CSS Selectors in Drupal
Intro to CSS Selectors in DrupalIntro to CSS Selectors in Drupal
Intro to CSS Selectors in Drupalcgmonroe
 
HTML and CSS crash course!
HTML and CSS crash course!HTML and CSS crash course!
HTML and CSS crash course!Ana Cidre
 
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012crokitta
 
Jquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript BasicsJquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript BasicsEPAM Systems
 
SharePoint & jQuery Guide - SPSNashville 2014
SharePoint & jQuery Guide - SPSNashville 2014SharePoint & jQuery Guide - SPSNashville 2014
SharePoint & jQuery Guide - SPSNashville 2014Mark Rackley
 
Jquery tutorial
Jquery tutorialJquery tutorial
Jquery tutorialBui Kiet
 
Efficient Rails Test-Driven Development - Week 6
Efficient Rails Test-Driven Development - Week 6Efficient Rails Test-Driven Development - Week 6
Efficient Rails Test-Driven Development - Week 6Marakana Inc.
 

Similar to SharePointfest Denver - A jQuery Primer for SharePoint (20)

Jquery 5
Jquery 5Jquery 5
Jquery 5
 
Advanced JQuery Mobile tutorial with Phonegap
Advanced JQuery Mobile tutorial with Phonegap Advanced JQuery Mobile tutorial with Phonegap
Advanced JQuery Mobile tutorial with Phonegap
 
jQuery
jQueryjQuery
jQuery
 
Introduction to jquery mobile with Phonegap
Introduction to jquery mobile with PhonegapIntroduction to jquery mobile with Phonegap
Introduction to jquery mobile with Phonegap
 
SEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePointSEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePoint
 
Intro to CSS Selectors in Drupal
Intro to CSS Selectors in DrupalIntro to CSS Selectors in Drupal
Intro to CSS Selectors in Drupal
 
HTML and CSS crash course!
HTML and CSS crash course!HTML and CSS crash course!
HTML and CSS crash course!
 
Angular JS
Angular JSAngular JS
Angular JS
 
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
 
jquery.ppt
jquery.pptjquery.ppt
jquery.ppt
 
JQuery
JQueryJQuery
JQuery
 
JQuery
JQueryJQuery
JQuery
 
Jquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript BasicsJquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript Basics
 
jQuery quick tuts
jQuery quick tutsjQuery quick tuts
jQuery quick tuts
 
Creative Web 2 - CSS
Creative Web 2 - CSS Creative Web 2 - CSS
Creative Web 2 - CSS
 
jQuery Presentasion
jQuery PresentasionjQuery Presentasion
jQuery Presentasion
 
SharePoint & jQuery Guide - SPSNashville 2014
SharePoint & jQuery Guide - SPSNashville 2014SharePoint & jQuery Guide - SPSNashville 2014
SharePoint & jQuery Guide - SPSNashville 2014
 
Css Selectors
Css SelectorsCss Selectors
Css Selectors
 
Jquery tutorial
Jquery tutorialJquery tutorial
Jquery tutorial
 
Efficient Rails Test-Driven Development - Week 6
Efficient Rails Test-Driven Development - Week 6Efficient Rails Test-Driven Development - Week 6
Efficient Rails Test-Driven Development - Week 6
 

More from Marc D Anderson

SPC2019 - Managing Content Types in the Modern World
SPC2019 - Managing Content Types in the Modern WorldSPC2019 - Managing Content Types in the Modern World
SPC2019 - Managing Content Types in the Modern WorldMarc D Anderson
 
ECS2019 - Managing Content Types in the Modern World
ECS2019 - Managing Content Types in the Modern WorldECS2019 - Managing Content Types in the Modern World
ECS2019 - Managing Content Types in the Modern WorldMarc D Anderson
 
Rencontre Groupe d'usagers SharePoint Montreal - The Next Great Migration - C...
Rencontre Groupe d'usagers SharePoint Montreal - The Next Great Migration - C...Rencontre Groupe d'usagers SharePoint Montreal - The Next Great Migration - C...
Rencontre Groupe d'usagers SharePoint Montreal - The Next Great Migration - C...Marc D Anderson
 
RISPUG - Top Form - Using PowerApps to Replace List Forms
RISPUG - Top Form - Using PowerApps to Replace List FormsRISPUG - Top Form - Using PowerApps to Replace List Forms
RISPUG - Top Form - Using PowerApps to Replace List FormsMarc D Anderson
 
SPCNA 2018 - Top Form - Using PowerApps to Replace List Forms
SPCNA 2018 - Top Form - Using PowerApps to Replace List FormsSPCNA 2018 - Top Form - Using PowerApps to Replace List Forms
SPCNA 2018 - Top Form - Using PowerApps to Replace List FormsMarc D Anderson
 
SPCNA 2018 - The Next Great Migration - Classic to Modern
SPCNA 2018 - The Next Great Migration - Classic to ModernSPCNA 2018 - The Next Great Migration - Classic to Modern
SPCNA 2018 - The Next Great Migration - Classic to ModernMarc D Anderson
 
SPS New York City 2017 - The Lay of the Land of Client-Side Development circa...
SPS New York City 2017 - The Lay of the Land of Client-Side Development circa...SPS New York City 2017 - The Lay of the Land of Client-Side Development circa...
SPS New York City 2017 - The Lay of the Land of Client-Side Development circa...Marc D Anderson
 
ECS Zagreb 2017 - Content Types - Love Them or Lose It
ECS Zagreb 2017 - Content Types - Love Them or Lose ItECS Zagreb 2017 - Content Types - Love Them or Lose It
ECS Zagreb 2017 - Content Types - Love Them or Lose ItMarc D Anderson
 
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017Marc D Anderson
 
Lions Tigers Teams - SPTechCon Austin 2017
Lions Tigers Teams - SPTechCon Austin 2017Lions Tigers Teams - SPTechCon Austin 2017
Lions Tigers Teams - SPTechCon Austin 2017Marc D Anderson
 
Oslo SP User Group - Content Types - Love Them or Lose It
Oslo SP User Group - Content Types - Love Them or Lose ItOslo SP User Group - Content Types - Love Them or Lose It
Oslo SP User Group - Content Types - Love Them or Lose ItMarc D Anderson
 
Unity Connect Haarlem 2016 - The Lay of the Land of Client-Side Development c...
Unity Connect Haarlem 2016 - The Lay of the Land of Client-Side Development c...Unity Connect Haarlem 2016 - The Lay of the Land of Client-Side Development c...
Unity Connect Haarlem 2016 - The Lay of the Land of Client-Side Development c...Marc D Anderson
 
SPTechCon Boston 2016 - Creating a Great User Experience in SharePoint
SPTechCon Boston 2016 - Creating a Great User Experience in SharePointSPTechCon Boston 2016 - Creating a Great User Experience in SharePoint
SPTechCon Boston 2016 - Creating a Great User Experience in SharePointMarc D Anderson
 
SPTechCon Boston 2016 - Content Types - Love Them or Lose It
SPTechCon Boston 2016 - Content Types - Love Them or Lose ItSPTechCon Boston 2016 - Content Types - Love Them or Lose It
SPTechCon Boston 2016 - Content Types - Love Them or Lose ItMarc D Anderson
 
SPC Adriatics 2016 - Creating a Great User Experience in SharePoint
SPC Adriatics 2016 - Creating a Great User Experience in SharePointSPC Adriatics 2016 - Creating a Great User Experience in SharePoint
SPC Adriatics 2016 - Creating a Great User Experience in SharePointMarc D Anderson
 
SPC Adriatics 2016 - Alternative Approaches to Solution Development in Office...
SPC Adriatics 2016 - Alternative Approaches to Solution Development in Office...SPC Adriatics 2016 - Alternative Approaches to Solution Development in Office...
SPC Adriatics 2016 - Alternative Approaches to Solution Development in Office...Marc D Anderson
 
SharePointFest Konferenz 2016 - Creating a Great User Experience in SharePoint
SharePointFest Konferenz 2016 - Creating a Great User Experience in SharePointSharePointFest Konferenz 2016 - Creating a Great User Experience in SharePoint
SharePointFest Konferenz 2016 - Creating a Great User Experience in SharePointMarc D Anderson
 
SharePointFest Konferenz 2016 - Alternative Approaches to Solution Developmen...
SharePointFest Konferenz 2016 - Alternative Approaches to Solution Developmen...SharePointFest Konferenz 2016 - Alternative Approaches to Solution Developmen...
SharePointFest Konferenz 2016 - Alternative Approaches to Solution Developmen...Marc D Anderson
 
SPTechCon Austin 2016 - Content Types-Love Them or Lose It
SPTechCon Austin 2016 - Content Types-Love Them or Lose ItSPTechCon Austin 2016 - Content Types-Love Them or Lose It
SPTechCon Austin 2016 - Content Types-Love Them or Lose ItMarc D Anderson
 
SPTechCon Austin 2016 - Creating a Great User Experience in SharePoint
SPTechCon Austin 2016 - Creating a Great User Experience in SharePointSPTechCon Austin 2016 - Creating a Great User Experience in SharePoint
SPTechCon Austin 2016 - Creating a Great User Experience in SharePointMarc D Anderson
 

More from Marc D Anderson (20)

SPC2019 - Managing Content Types in the Modern World
SPC2019 - Managing Content Types in the Modern WorldSPC2019 - Managing Content Types in the Modern World
SPC2019 - Managing Content Types in the Modern World
 
ECS2019 - Managing Content Types in the Modern World
ECS2019 - Managing Content Types in the Modern WorldECS2019 - Managing Content Types in the Modern World
ECS2019 - Managing Content Types in the Modern World
 
Rencontre Groupe d'usagers SharePoint Montreal - The Next Great Migration - C...
Rencontre Groupe d'usagers SharePoint Montreal - The Next Great Migration - C...Rencontre Groupe d'usagers SharePoint Montreal - The Next Great Migration - C...
Rencontre Groupe d'usagers SharePoint Montreal - The Next Great Migration - C...
 
RISPUG - Top Form - Using PowerApps to Replace List Forms
RISPUG - Top Form - Using PowerApps to Replace List FormsRISPUG - Top Form - Using PowerApps to Replace List Forms
RISPUG - Top Form - Using PowerApps to Replace List Forms
 
SPCNA 2018 - Top Form - Using PowerApps to Replace List Forms
SPCNA 2018 - Top Form - Using PowerApps to Replace List FormsSPCNA 2018 - Top Form - Using PowerApps to Replace List Forms
SPCNA 2018 - Top Form - Using PowerApps to Replace List Forms
 
SPCNA 2018 - The Next Great Migration - Classic to Modern
SPCNA 2018 - The Next Great Migration - Classic to ModernSPCNA 2018 - The Next Great Migration - Classic to Modern
SPCNA 2018 - The Next Great Migration - Classic to Modern
 
SPS New York City 2017 - The Lay of the Land of Client-Side Development circa...
SPS New York City 2017 - The Lay of the Land of Client-Side Development circa...SPS New York City 2017 - The Lay of the Land of Client-Side Development circa...
SPS New York City 2017 - The Lay of the Land of Client-Side Development circa...
 
ECS Zagreb 2017 - Content Types - Love Them or Lose It
ECS Zagreb 2017 - Content Types - Love Them or Lose ItECS Zagreb 2017 - Content Types - Love Them or Lose It
ECS Zagreb 2017 - Content Types - Love Them or Lose It
 
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
 
Lions Tigers Teams - SPTechCon Austin 2017
Lions Tigers Teams - SPTechCon Austin 2017Lions Tigers Teams - SPTechCon Austin 2017
Lions Tigers Teams - SPTechCon Austin 2017
 
Oslo SP User Group - Content Types - Love Them or Lose It
Oslo SP User Group - Content Types - Love Them or Lose ItOslo SP User Group - Content Types - Love Them or Lose It
Oslo SP User Group - Content Types - Love Them or Lose It
 
Unity Connect Haarlem 2016 - The Lay of the Land of Client-Side Development c...
Unity Connect Haarlem 2016 - The Lay of the Land of Client-Side Development c...Unity Connect Haarlem 2016 - The Lay of the Land of Client-Side Development c...
Unity Connect Haarlem 2016 - The Lay of the Land of Client-Side Development c...
 
SPTechCon Boston 2016 - Creating a Great User Experience in SharePoint
SPTechCon Boston 2016 - Creating a Great User Experience in SharePointSPTechCon Boston 2016 - Creating a Great User Experience in SharePoint
SPTechCon Boston 2016 - Creating a Great User Experience in SharePoint
 
SPTechCon Boston 2016 - Content Types - Love Them or Lose It
SPTechCon Boston 2016 - Content Types - Love Them or Lose ItSPTechCon Boston 2016 - Content Types - Love Them or Lose It
SPTechCon Boston 2016 - Content Types - Love Them or Lose It
 
SPC Adriatics 2016 - Creating a Great User Experience in SharePoint
SPC Adriatics 2016 - Creating a Great User Experience in SharePointSPC Adriatics 2016 - Creating a Great User Experience in SharePoint
SPC Adriatics 2016 - Creating a Great User Experience in SharePoint
 
SPC Adriatics 2016 - Alternative Approaches to Solution Development in Office...
SPC Adriatics 2016 - Alternative Approaches to Solution Development in Office...SPC Adriatics 2016 - Alternative Approaches to Solution Development in Office...
SPC Adriatics 2016 - Alternative Approaches to Solution Development in Office...
 
SharePointFest Konferenz 2016 - Creating a Great User Experience in SharePoint
SharePointFest Konferenz 2016 - Creating a Great User Experience in SharePointSharePointFest Konferenz 2016 - Creating a Great User Experience in SharePoint
SharePointFest Konferenz 2016 - Creating a Great User Experience in SharePoint
 
SharePointFest Konferenz 2016 - Alternative Approaches to Solution Developmen...
SharePointFest Konferenz 2016 - Alternative Approaches to Solution Developmen...SharePointFest Konferenz 2016 - Alternative Approaches to Solution Developmen...
SharePointFest Konferenz 2016 - Alternative Approaches to Solution Developmen...
 
SPTechCon Austin 2016 - Content Types-Love Them or Lose It
SPTechCon Austin 2016 - Content Types-Love Them or Lose ItSPTechCon Austin 2016 - Content Types-Love Them or Lose It
SPTechCon Austin 2016 - Content Types-Love Them or Lose It
 
SPTechCon Austin 2016 - Creating a Great User Experience in SharePoint
SPTechCon Austin 2016 - Creating a Great User Experience in SharePointSPTechCon Austin 2016 - Creating a Great User Experience in SharePoint
SPTechCon Austin 2016 - Creating a Great User Experience in SharePoint
 

Recently uploaded

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 

Recently uploaded (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 

SharePointfest Denver - A jQuery Primer for SharePoint

  • 1. A jQuery Primer for SharePoint
  • 4. Getting Started • Add references to the jQuery library – Master page – Page layout – Individual aspx pages
  • 5. Referencing Script Libraries from CDNs <!-- Reference the jQueryUI theme's stylesheet on the Google CDN. Here we're using the "start" theme --> <link type="text/css" rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/theme s/start/jquery-ui.css" /> <!-- Reference jQuery on the Google CDN --> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.mi n.js"></script> <!-- Reference jQueryUI on the Google CDN --> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery -ui.min.js"></script> <!-- Reference SPServices on cdnjs (Cloudflare) --> <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery.SPServices/0.7 .1a/jquery.SPServices-0.7.1a.min.js"></script> More: http://sympmarc.com/2012/04/20/referencing-jquery-jqueryui-and-spservices-from-cdns/
  • 6. SharePoint Web Technology • HTML – Hypertext Markup Language – Content and structure • CSS – Cascading Style Sheets – Presentation and style • JavaScript and jQuery – Interactive behavior
  • 7. HTML Elements Opening tag Closing tag Powered by <a href="http://office365.com">Office365</a>. Attribute Value
  • 9. Intro to CSS: Why does CSS matter? • CSS = Cascading Style Sheets • jQuery uses selectors that are very similar to CSS selectors • CSS is the fundamental styling mechanism for the Web • HTML + CSS + jQuery = AWESOME
  • 10. CSS Styles Select HTML element(s) .article { Modify them! color: red; }
  • 11. CSS Element Selectors p { <p> color: red; Paragraph of text. } </p> Paragraph of text.
  • 12. CSS Class Selectors .article { <div class="article"> color: red; This is an article. } </div> This is an article.
  • 13. CSS ID Selectors #header { <div id="header"> color: red; This is a header. } </div> This is a header.
  • 14. CSS Descendant Selectors #header h1 { <div id="header"> <h1> color: red; This is a header. } </h1> </div> This is a header.
  • 15. CSS Composite Selectors #header ul.top-nav li { <div id="header"> color: red; <ul class="top-nav"> } <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul> </div> • Item 1 • Item 2 • Item 3
  • 16. CSS Complex Selectors ul.top-nav > li { <ul class="top-nav"> <li>Item 1</li> color: red; <li> } Item 2 <ul class="menu"> <li>Menu 1</li> </ul> </li> </ul> • Item 1 • Item 2 • Menu 1
  • 17. My CSS "Best" Practices • Use truly unique class and id names • Choose a prefix for your project, e.g. „xyz-‟ or „x51-‟ • All of your classes and ids will be easy to select: xyz-home-page-article x51-top-section • Don‟t be afraid of verbose class and ID names!
  • 19. What is the Document Object Model (DOM)? • The DOM starts as the page‟s markup (HTML) as delivered to the browser by the server: View Source • Styled by the CSS which gives the page its the look and feel • The DOM is acted upon by any script in the page
  • 20. What Can We Do With the DOM? • Add or remove CSS classes • Create new HTML elements • Remove HTML elements • Change HTML element attributes • And so much more The DOM is HTML, which is XML, which is data!
  • 22. Internet Explorer Developer Tools (F12) • Shows the Internet Explorer view of SharePoint‟s pages – some pages are rendered differently in other browsers
  • 23. The Firebug Add-On for Firefox • Better for debugging and looking at Net traffic
  • 25. The Basic Idea of jQuery Select something $('.article').hide(); Do something!
  • 26. jQuery’s Document Ready $(document).ready(function({ // do something }); • Processing is suspended until the page‟s DOM is fully loaded • Ensures that all of the elements you need are available
  • 27. jQuery Documentation: Your Friend • The jQuery documentation is arranged to help you • What you need to know is arranged sequentially from top to bottom
  • 29. jQuery Selectors • Selectors are the most important jQuery concept • Selecting the right DOM object(s) is half the battle • Selectors return a collection of DOM objects – 1 to n matching elements
  • 30. jQuery Element Selectors <p> Paragraph of text. </p> $("p")
  • 31. jQuery Element Selectors <p>Paragraph 1 of text.</p> <p>Paragraph 2 of text.</p> var allParagraphs = $("p"); allParagraphs is now defined as a jQuery object which contains pointers to all paragraphs in the page
  • 32. jQuery Class Selectors <div class="article"> This is an article. </div> $(".article")
  • 33. jQuery ID Selectors <div id="header"> This is a header. </div> $("#header")
  • 34. jQuery Descendant Selectors <div id="header"> <h1> This is a header. </h1> </div> $("#header h1")
  • 35. jQuery Composite Selectors <div id="header"> <ul class="top-nav"> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul> </div> $("#header ul.top-nav li")
  • 36. jQuery Complex Selectors <ul class="top-nav"> <li>Item 1</li> <li> Item 2 <ul class="menu"> <li>Menu 1</li> </ul> </li> </ul> $("#header ul.top-nav li")
  • 37. Selectors for SharePoint <DIV class=ms-quicklaunchheader> <A accessKey=3 id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll href="/Intranet/JQueryLib/_layouts/viewlsts.aspx"> View All Site Content </A> </DIV> $("div.ms-quicklaunchheader")
  • 38. Selectors for SharePoint <DIV class=ms-quicklaunchheader> <A accessKey=3 id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll href="/Intranet/JQueryLib/_layouts/viewlsts.aspx"> View All Site Content </A> </DIV> $("#ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll")
  • 39. Selectors for SharePoint <DIV class=ms-quicklaunchheader> <A accessKey=3 id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll href="/Intranet/JQueryLib/_layouts/viewlsts.aspx"> View All Site Content </A> </DIV> $("a[id$='NavLinkViewAll']")
  • 40. Useful jQuery Selector Tricks • .NET Applications like SharePoint generate some long and ugly markup and IDs • These selector tricks really help $("[id='foo']"); // Equal to $("[id!='foo']"); // Not equal to $("[id^='foo']"); // Starts with $("[id$='foo']"); // Ends with $("[id*='foo']"); // Contains $("[id~='foo']"); // Contains word $("[id|='foo']"); // Contains prefix $("[id]"); // Has $("[id][class][style]"); // Has all
  • 42. jQuery Attributes • Once you‟ve selected the right DOM element, you can use jQuery to get or set its attributes • As of jQuery 1.6, the .prop() method provides a way to explicitly retrieve property values, while .attr() retrieves attributes
  • 43. jQuery Attributes: Get and Set <div id="helloDiv" class="ms-bold"> Hello, world! </div> GET: var thisClass = $("#helloDiv").attr("class"); SET: $("#helloDiv").attr("class", "ms-hidden");
  • 44. Example with SharePoint Attributes: Get <DIV class=ms-quicklaunchheader> <A accessKey=3 id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll href="/Intranet/JQueryLib/_layouts/viewlsts.aspx"> View All Site Content </A> </DIV> var thisKey = $("a[id$='NavLinkViewAll']").attr("accessKey");
  • 45. Example with SharePoint Attributes: Set <DIV class=ms-quicklaunchheader> <A accessKey=99 id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll href="/Intranet/JQueryLib/_layouts/viewlsts.aspx"> View All Site Content </A> </DIV> $("a[id$='NavLinkViewAll']").attr("accessKey", 99);
  • 47. Traversing • Traversing lets you move around the DOM based on your initial selection • This is how you get at elements which are difficult to select directly • Ancestry matters in XML / HTML
  • 48. Find an Element’s Ancestors <div id="helloDiv" class="ms-bold"> <ul> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul> </div> $("ul").parent(); $("ul").closest("div");
  • 49. Traversing Down: Find an Element’s Specific Children <DIV class=ms-quicklaunchheader> <A accessKey=3 id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll href="/Intranet/JQueryLib/_layouts/viewlsts.aspx"> View All Site Content </A> </DIV> $("div.ms-quicklaunchheader").find("a");
  • 50. Traversing Down: Find an Element’s Specific Children <DIV class=ms-quicklaunchheader> <A accessKey=3 id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll href="/Intranet/JQueryLib/_layouts/viewlsts.aspx"> View All Site Content </A> </DIV> $("div.ms-quicklaunchheader").find("a");
  • 51. SharePoint Example of Traversing: Initial Selector <DIV class=ms-quicklaunchheader> <A accessKey=3 id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll href="/Intranet/JQueryLib/_layouts/viewlsts.aspx"> View All Site Content </A> </DIV> $("a[id$='NavLinkViewAll']").parent();
  • 52. SharePoint Example of Traversing: Finding Parent <DIV class=ms-quicklaunchheader> <A accessKey=3 id=ctl00_PlaceHolderLeftNavBar_idNavLinkViewAll href="/Intranet/JQueryLib/_layouts/viewlsts.aspx"> View All Site Content </A> </DIV> $("a[id$='NavLinkViewAll']").parent();
  • 53. Traversal Example from SPServices SelectCandidate SelectResult <select <select name="ctl00$m$g_e845e690_00da_428f_afbd_fbe80 name="ctl00$m$g_e845e690_00da_428f_afbd_fbe8047 4787763$ctl00$ctl04$ctl07$ctl00$ctl00$ctl04$c 87763$ctl00$ctl04$ctl07$ctl00$ctl00$ctl04$ctl00 var possibleValues = tl00$ctl00$SelectCandidate" title="City $ctl00$SelectResult" title="City selected values" possible values" $("select[ID$='SelectCandidate'][Title^='" + id="ctl00_m_g_e845e690_00da_428f_afbd_fbe8047 id="ctl00_m_g_e845e690_00da_428f_afbd_fbe804787 87763_ctl00_ctl04_ctl07_ctl00_ctl00_ctl04_ctl 763_ctl00_ctl04_ctl07_ctl00_ctl00_ctl04_ctl00_c opt.multiSelectColumn + " ']"); 00_ctl00_SelectCandidate" style="width: tl00_SelectResult" style="width: 162px;" var selectedValues = 162px;" onkeydown="GipHandleHScroll(event)" onkeydown="GipHandleHScroll(event)" ondblclick="GipRemoveSelectedItems(ctl00_m_g_e8 ondblclick="GipAddSelectedItems(ctl00_m_g_e84 possibleValues.closest("span").find("select[ID$='SelectResult 5e690_00da_428f_afbd_fbe804787763_ctl00_ctl04 45e690_00da_428f_afbd_fbe804787763_ctl00_ctl04_ _ctl07_ctl00_ctl00_ctl04_ctl00_ctl00_MultiLoo ctl07_ctl00_ctl00_ctl04_ctl00_ctl00_MultiLookup '][Title^='" + opt.multiSelectColumn + " ']"); kupPicker_m); return false" Picker_m); return false" onchange="GipSelectCandidateItems(ctl00_m_g_e onchange="GipSelectResultItems(ctl00_m_g_e845e6 845e690_00da_428f_afbd_fbe804787763_ctl00_ctl 90_00da_428f_afbd_fbe804787763_ctl00_ctl04_ctl0 04_ctl07_ctl00_ctl00_ctl04_ctl00_ctl00_MultiL 7_ctl00_ctl00_ctl04_ctl00_ctl00_MultiLookupPick ookupPicker_m);" size="350" multiple=""> er_m);" size="20" multiple="">
  • 55. Manipulation • Once you‟ve gotten the right element(s), you can manipulate their attributes or properties • You can also change their contents
  • 56. Manipulation: Adding Text <div id="helloDiv" class="ms-bold"> Hello, world! </div> $("#helloDiv").append("And you're welcome to it!"); <div id="helloDiv" class="ms-bold"> Hello, world! And you're welcome to it! </div>
  • 57. Manipulation: Adding CSS Classes <div id="helloDiv" class="ms-bold"> Hello, world! </div> $("#helloDiv").addClass("my-class"); <div id="helloDiv" class="ms-bold my-class"> Hello, world! </div>
  • 58. Manipulation: Wrapping Elements <div id="helloDiv" class="ms-bold"> Hello, world! </div> $("#helloDiv") .wrap("<a href='http://cnn.com'></a>"); <a href="http://cnn.com"> <div id="helloDiv" class="ms-bold"> Hello, world! </div> </a>
  • 59. Manipulation: Inserting Elements <div id="helloDiv" class="ms-bold"> Hello, world! </div> $("#helloDiv") .before("<div>This is a new div.</div>"); <div>This is a new div.</div> <div id="helloDiv" class="ms-bold"> Hello, world! </div>
  • 60. Manipulation: Changing CSS <div id="helloDiv" class="ms-bold"> Hello, world! </div> $("#helloDiv").css("background-color", "fuchsia"); $("#helloDiv").css({ border: "1px black solid", color: "red" });
  • 62. Events • jQuery‟s events enable you to work with all of the standard JavaScript events • These methods are used to register behaviors to take effect when the user interacts with the browser, and to further manipulate those registered behaviors.
  • 63. jQuery Events $('.article').click(function(){ // do something }); $('.article').mouseover(function(){ // do something });
  • 64. jQuery Events $("h3.ms-WPTitle").click(function() { alert("You'll now be taken directly to the list."); }); $("h3.ms-WPTitle").mouseover(function() { $("#helloDiv").css("background-color", "fuchsia"); });
  • 66. Effects • jQuery gives you a set of effects you can use to change the elements in the page • Effects can be: – Visual: Change how the user sees existing elements with animations – Manipulative: Change where and how elements are shown by moving them around in the DOM
  • 68. Putting It Together: Example • This example changes what happens when you click on a Web Part Title. // Remove the links on the Web Part Titles $("h3.ms-WPTitle").find("nobr").unwrap("<a></a>"); // Add click behavior that toggles the visibility // of the Web Part $("h3.ms-WPTitle").click(function() { $(this).closest("table").closest("tr").next().toggle(); });
  • 69. Putting It Together: Example • This example shows part of SPArrangeChoices from SPServices. // Collect all of the choices $(thisFormField).find("tr").each(function() { columnOptions.push($(this).html()); }); out = "<TR>"; // Add all of the options to the out string for(i=0; i < columnOptions.length; i++) { out += columnOptions[i]; // If we've already got perRow columnOptions in the row, close off the row if((i+1) % opt.perRow === 0) { out += "</TR><TR>"; } } out += "</TR>"; // Remove the existing rows... $(thisFormField).find("tr").remove(); // ...and append the out string $(thisFormField).find("table").append(out);
  • 70. jQueryUI Takes Effects Further $('.article').tabs(); $('input').autocomplete(); $('#infoBox').dialog(); …and many more
  • 71. jQuery Plugins Abound! • If you want to do something sophisticated, look for an existing plugin • Do some due diligence – some of the plugins aren‟t written very well • Beware of “plugin sprawl”
  • 72. More Useful Tools • JavaScript Compressorator – Minifies script files using multiple methods http://compressorrater.thruhere.net/ • JSLint – Checks your script against accepted standards http://jslint.com/ “Warning: JSLint will hurt your feelings.”
  • 73. Contact Information eMail marc.anderson@sympraxisconsulting.com Blog http://sympmarc.com SPServices http://spservices.codeplex.com SPXSLT http://spxslt.codeplex.com USPJA Academy http://uspja.com eBook http://bit.ly/UnlockingDVWP The Middle Tier Manifesto http://bit.ly/middletier