jQuery CSS manipulation - jQuery basic tutorial 6

6. jQuery CSS manipulation

The jQuery library supports nearly all of the selectors included in Cascading Style Sheet (CSS) specifications 1 through 3, as outlined on the World Wide Web Consortium's site.
Using JQuery library developers can enhance their websites without worrying about browsers and their versions as long as the browsers have JavaScript enabled.
Most of the JQuery CSS Methods do not modify the content of the jQuery object and they are used to apply CSS properties on DOM elements.

Apply CSS Properties:

This is very simple to apply any CSS property using JQuery method css( PropertyName, PropertyValue ).
Here is the syntax for the method:
selector.css( PropertyName, PropertyValue );
Here you can pass PropertyName as a javascript string and based on its value, PropertyValue could be string or integer.

Example:

Following is an example which adds font color to the second list item.
<html>
<head>
<title>the title</title>
   <script type="text/javascript" 
   src="/jquery/jquery-1.3.2.min.js"></script>
   <script type="text/javascript" language="javascript">
   
   $(document).ready(function() {
      $("li").eq(2).css("color", "red");
   });

   </script>
</head>
<body>
   <div>
   <ul>
     <li>list item 1</li>
     <li>list item 2</li>
     <li>list item 3</li>
     <li>list item 4</li>
     <li>list item 5</li>
     <li>list item 6</li>
   </ul>
   </div>
</body>
</html>

Apply Multiple CSS Properties:

You can apply multiple CSS properties using a single JQuery method CSS( {key1:val1, key2:val2....). You can apply as many properties as you like in a single call.
Here is the syntax for the method:
selector.css( {key1:val1, key2:val2....keyN:valN})
Here you can pass key as property and val as its value as described above.

Example:

Following is an example which adds font color as well as background color to the second list item.
<html>
<head>
<title>the title</title>
   <script type="text/javascript" 
   src="/jquery/jquery-1.3.2.min.js"></script>
   <script type="text/javascript" language="javascript">
   
   $(document).ready(function() {
      $("li").eq(2).css({"color":"red", 
                         "background-color":"green"});
   });

   </script>
</head>
<body>
   <div>
   <ul>
     <li>list item 1</li>
     <li>list item 2</li>
     <li>list item 3</li>
     <li>list item 4</li>
     <li>list item 5</li>
     <li>list item 6</li>
   </ul>
   </div>
</body>
</html>

Setting Element Width & Height:

The width( val ) and height( val ) method can be used to set the width and hieght respectively of any element.

Example:

Following is a simple example which sets the width of first division element where as rest of the elements have width set by style sheet:
<html>
<head>
<title>the title</title>
   <script type="text/javascript" 
   src="/jquery/jquery-1.3.2.min.js"></script>
   <script type="text/javascript" language="javascript">
   
   $(document).ready(function() {
      $("div:first").width(100);
      $("div:first").css("background-color", "blue");
   });

   </script>
   <style>
   div{ width:70px; height:50px; float:left; margin:5px;
      background:red; cursor:pointer; }
  </style>
</head>
<body>
  <div></div>
  <div>d</div>
  <div>d</div>
  <div>d</div>
  <div>d</div>
</body>
</html>

JQuery CSS Methods:

Following table lists down all the methods which you can use to play with CSS properties:

Method Description
css( name ) Return a style property on the first matched element.
css( name, value ) Set a single style property to a value on all matched elements.
css( properties ) Set a key/value object as style properties to all matched elements.
height( val ) Set the CSS height of every matched element.
height( ) Get the current computed, pixel, height of the first matched element.
innerHeight( ) Gets the inner height (excludes the border and includes the padding) for the first matched element.
innerWidth( ) Gets the inner width (excludes the border and includes the padding) for the first matched element.
offset( ) Get the current offset of the first matched element, in pixels, relative to the document
offsetParent( ) Returns a jQuery collection with the positioned parent of the first matched element.
outerHeight( [margin] ) Gets the outer height (includes the border and padding by default) for the first matched element.
outerWidth( [margin] ) Get the outer width (includes the border and padding by default) for the first matched element.
position( ) Gets the top and left position of an element relative to its offset parent.
scrollLeft( val ) When a value is passed in, the scroll left offset is set to that value on all matched elements.
scrollLeft( ) Gets the scroll left offset of the first matched element.
scrollTop( val ) When a value is passed in, the scroll top offset is set to that value on all matched elements.
scrollTop( ) Gets the scroll top offset of the first matched element.
width( val ) Set the CSS width of every matched element.
width( ) Get the current computed, pixel, width of the first matched element.

jQuery dom traverse - jQuery basic tutorial 5

5. jQuery Traversing through DOM

jQuery is a very powerful tool which provides a variety of DOM traversal methods to help us select elements in a document randomly as well as in sequential method.
Most of the DOM Traversal Methods do not modify the jQuery object and they are used to filter out elements from a document based on given conditions.

Find Elements by index:

Consider a simple document with the following HTML content:
<html>
<head>
<title>the title</title>
</head>
<body>
   <div>
   <ul>
     <li>list item 1</li>
     <li>list item 2</li>
     <li>list item 3</li>
     <li>list item 4</li>
     <li>list item 5</li>
     <li>list item 6</li>
   </ul>
   </div>
</body>
</html>
  • Above every list has its own index, and can be located directly by using eq(index) method as below example.
  • Every child element starts its index from zero, thus, list item 2 would be accessed by using $("li").eq(1) and so on.

    Example:

    Following is a simple example which adds the color to second list item.
    <html>
    <head>
    <title>the title</title>
       <script type="text/javascript" 
       src="/jquery/jquery-1.3.2.min.js"></script>
       <script type="text/javascript" language="javascript">
       
       $(document).ready(function() {
          $("li").eq(2).addClass("selected");
       });
    
       </script>
       <style>
          .selected { color:red; }
      </style>
    </head>
    <body>
       <div>
       <ul>
         <li>list item 1</li>
         <li>list item 2</li>
         <li>list item 3</li>
         <li>list item 4</li>
         <li>list item 5</li>
         <li>list item 6</li>
       </ul>
       </div>
    </body>
    </html>

    Filtering out Elements:

    The filter( selector ) method can be used to filter out all elements from the set of matched elements that do not match the specified selector(s). The selector can be written using any selector syntax.

    Example:

    Following is a simple example which applies color to the lists associated with middle class:
    <html>
    <head>
    <title>the title</title>
       <script type="text/javascript" 
       src="/jquery/jquery-1.3.2.min.js"></script>
       <script type="text/javascript" language="javascript">
       
       $(document).ready(function() {
          $("li").filter(".middle").addClass("selected");
       });
    
       </script>
       <style>
          .selected { color:red; }
      </style>
    </head>
    <body>
       <div>
       <ul>
         <li class="top">list item 1</li>
         <li class="top">list item 2</li>
         <li class="middle">list item 3</li>
         <li class="middle">list item 4</li>
         <li class="bottom">list item 5</li>
         <li class="bottom">list item 6</li>
       </ul>
       </div>
    </body>
    </html>

    Locating Descendent Elements :

    The find( selector ) method can be used to locate all the descendent elements of a particular type of elements. The selector can be written using any selector syntax.

    Example:

    Following is an example which selects all the <span> elements available inside different <p> elements:
    <html>
    <head>
    <title>the title</title>
       <script type="text/javascript" 
       src="/jquery/jquery-1.3.2.min.js"></script>
       <script type="text/javascript" language="javascript">
    
       $(document).ready(function() {
          $("p").find("span").addClass("selected");
       });
    
       </script>
       <style>
          .selected { color:red; }
      </style>
    </head>
    <body>
       <p>This is 1st paragraph and <span>THIS IS RED</span></p>
       <p>This is 2nd paragraph and <span>THIS IS ALSO RED</span></p>
    </body>
    </html>

    JQuery DOM Traversing Methods:

    Following table lists down useful methods which you can use to filter out various elements from a list of DOM elements:
    Selector Description
    eq( index ) Reduce the set of matched elements to a single element.
    filter( selector ) Removes all elements from the set of matched elements that do not match the specified selector(s).
    filter( fn ) Removes all elements from the set of matched elements that do not match the specified function.
    is( selector ) Checks the current selection against an expression and returns true, if at least one element of the selection fits the given selector.
    map( callback ) Translate a set of elements in the jQuery object into another set of values in a jQuery array (which may, or may not contain elements).
    not( selector ) Removes elements matching the specified selector from the set of matched elements.
    slice( start, [end] ) Selects a subset of the matched elements.
          Following table lists down other useful methods which you can use to locate various elements in a DOM:

Selector Description
add( selector ) Adds more elements, matched by the given selector, to the set of matched elements.
andSelf( ) Add the previous selection to the current selection.
children( [selector]) Get a set of elements containing all of the unique immediate children of each of the matched set of elements.
closest( selector ) Get a set of elements containing the closest parent element that matches the specified selector, the starting element included.
contents( ) Find all the child nodes inside the matched elements (including text nodes), or the content document, if the element is an iframe.
end( ) Revert the most recent 'destructive' operation, changing the set of matched elements to its previous state .
find( selector ) Searches for descendent elements that match the specified selectors.
next( [selector] ) Get a set of elements containing the unique next siblings of each of the given set of elements.
nextAll( [selector] ) Find all sibling elements after the current element.
offsetParent( ) Returns a jQuery collection with the positioned parent of the first matched element.
parent( [selector] ) Get the direct parent of an element. If called on a set of elements, parent returns a set of their unique direct parent elements.
parents( [selector] ) Get a set of elements containing the unique ancestors of the matched set of elements (except for the root element).
prev( [selector] ) Get a set of elements containing the unique previous siblings of each of the matched set of elements.
prevAll( [selector] ) Find all sibling elements in front of the current element.
siblings( [selector] ) Get a set of elements containing all of the unique siblings of each of the matched set of elements.

jQuery attribute manipulation - jQuery basic tutorial 4

4. jQuery Attributes Manipulation

Some of the most basic components we can manipulate when it comes to DOM elements are the properties and attributes assigned to those elements.
Most of these attributes are available through JavaScript as DOM node properties. Some of the more common properties are:
  • className
  • tagName
  • id
  • href
  • title
  • rel
  • src
Consider the following HTML markup for an image element:
<img id="myImage" src="image.gif" alt="An image" 
class="someClass" title="This is an image"/>
In this element's markup, the tag name is img, and the markup for id, src, alt, class, and title represents the element's attributes, each of which consists of a name and a value.
jQuery gives us the means to easily manipulate an element's attributes and gives us access to the element so that we can also change its properties.

Get Attribute Value:

The attr() method can be used to either fetch the value of an attribute from the first element in the matched set or set attribute values onto all matched elements.

Example:

Following is a simple example which fetches title attribute of <em> tag and set <div id="divid"> value with the same value:
<html>
<head>
<title>the title</title>
   <script type="text/javascript" 
   src="/jquery/jquery-1.3.2.min.js"></script>
   <script type="text/javascript" language="javascript">

   $(document).ready(function() {
      var title = $("em").attr("title");
      $("#divid").text(title);
   });

   </script>
</head>
<body>
   <div>
      <em title="Bold and Brave">This is first paragraph.</em>
      <p id="myid">This is second paragraph.</p>
      <div id="divid"></div>
   </div>
</body>
</html>

Set Attribute Value:

The attr(name, value) method can be used to set the named attribute onto all elements in the wrapped set using the passed value.

Example:

Following is a simple example which set src attribute of an image tag to a correct location:
<html>
<head>
<title>the title</title>
   <script type="text/javascript" 
   src="/jquery/jquery-1.3.2.min.js"></script>
   <script type="text/javascript" language="javascript">

   $(document).ready(function() {
      $("#myimg").attr("src", "/images/jquery.jpg");
   });

   </script>
</head>
<body>
   <div>
      <img id="myimg" src="/wongpath.jpg" alt="Sample image" />
   </div>
</body>
</html>

Applying Styles:

The addClass( classes ) method can be used to apply defined style sheets onto all the matched elements. You can specify multiple classes separated by space.

Example:

Following is a simple example which set src attribute of an image tag to a correct location:
<html>
<head>
<title>the title</title>
   <script type="text/javascript" 
   src="/jquery/jquery-1.3.2.min.js"></script>
   <script type="text/javascript" language="javascript">

   $(document).ready(function() {
      $("em").addClass("selected");
      $("#myid").addClass("highlight");
   });

   </script>
   <style>
      .selected { color:red; }
      .highlight { background:yellow; }
  </style>
</head>
<body>
   <em title="Bold and Brave">This is first paragraph.</em>
   <p id="myid">This is second paragraph.</p>
</body>
</html>

Useful Attribute Methods:

Following table lists down few useful methods which you can use to manipulate attributes and properties:
Methods Description
attr( properties ) Set a key/value object as properties to all matched elements.
attr( key, fn ) Set a single property to a computed value, on all matched elements.
removeAttr( name ) Remove an attribute from each of the matched elements.
hasClass( class ) Returns true if the specified class is present on at least one of the set of matched elements.
removeClass( class ) Removes all or the specified class(es) from the set of matched elements.
toggleClass( class ) Adds the specified class if it is not present, removes the specified class if it is present.
html( ) Get the html contents (innerHTML) of the first matched element.
html( val ) Set the html contents of every matched element.
text( ) Get the combined text contents of all matched elements.
text( val ) Set the text contents of all matched elements.
val( ) Get the input value of the first matched element.
val( val ) Set the value attribute of every matched element if it is called on <input> but if it is called on <select> with the passed <option> value then passed option would be selected, if it is called on check box or radio box then all the matching check box and radiobox would be checked.
Similar to above syntax and examples, following examples would give you understanding on using various attribute methods in different situation:
  • $("#myID").attr("custom") : This would return value of attribute custom for the first element matching with ID myID.
  • $("img").attr("alt", "Sample Image"): This sets the alt attribute of all the images to a new value "Sample Image".
  • $("input").attr({ value: "", title: "Please enter a value" }); : Sets the value of all <input> elements to the empty string, as well as sets the title to the string Please enter a value.
  • $("a[href^=http://]").attr("target","_blank"): Selects all links with an href attribute starting with http:// and set its target attribute to _blank
  • $("a").removeAttr("target") : This would remove target attribute of all the links.
  • $("form").submit(function() {$(":submit",this).attr("disabled", "disabled");}); : This would modify the disabled attribute to the value "disabled" while clicking Submit button.
  • $("p:last").hasClass("selected"): This return true if last <p> tag has associated classselected.
  • $("p").text(): Returns string that contains the combined text contents of all matched <p> elements.
  • $("p").text("<i>Hello World</i>"): This would set "<I>Hello World</I>" as text content of the matching <p> elements
  • $("p").html() : This returns the HTML content of the all matching paragraphs.
  • $("div").html("Hello World") : This would set the HTML content of all matching <div> to Hello World.
  • $("input:checkbox:checked").val() : Get the first value from a checked checkbox
  • $("input:radio[name=bar]:checked").val(): Get the first value from a set of radio buttons
  • $("button").val("Hello") : Sets the value attribute of every matched element <button>.
  • $("input").val("on") : This would check all the radio or check box button whose value is "on".
  • $("select").val("Orange") : This would select Orange option in a dropdown box with options Orange, Mango and Banana.
  • $("select").val("Orange", "Mango") : This would select Orange and Mango options in a dropdown box with options Orange, Mango and Banana.