jQuery provides some very powerful selection expressions using colon (:) syntax. Things like :first, :odd,
and :even let you write
code like: $('#content a:first') to get the first anchor within #content, or
$('tr:odd') to get the odd numbered rows of a table. What's even cooler is that you can extend
this behavior to add your own convenience selectors by extending the
jQuery.expr[':'] object.
This page adds these two expressions:
:submitable
:nothidden
This test form below is just a way to demonstrate the usage of these selectors.
Click the 'Test' buttons to run queries againt the test form elements.
:selected
Display value of currently selected option
:submitable
Count the number of submitable elements in the form (use radios and checks to change output)
:nothidden
Count the non-hidden 'input' elements (8)
:hidden
Count hidden 'input' elements using build in jQuery expr (2)
input
Count the number of 'input' elements using built in jQuery expr (10)
core jQuery.expr[:] expresssions
sample custom expresssions added to jQuery.expr[':']
the code
// Add this code anywhere you want (after jQuery has been loaded).
// Edit it to add your own expressions.
jQuery.extend(jQuery.expr[':'], {
///////////////////////////////////////////////////////////
// form elements that are submitable based on these criteria
// element is not disabled
// element has a selected or checked attribute
// element is a textarea
// element is an input of type text or hidden
//
// @usage: $(':submitable')
// @usage: $('#myForm :submitable')
submitable: function(a) {
return !a.disabled&&(a.selected||a.checked||(a.nodeName.toUpperCase()=='TEXTAREA')||(a.nodeName.toUpperCase()=='INPUT'&&(a.type=='text'||a.type=='hidden'||a.type=='password')));
},
///////////////////////////////////////////////////////////
// elements that have a type attribute not equal to hidden
// use if you want to select all input elements that are not hidden
// @usage: $('input:nothidden')
nothidden: function(a) {
return a.type&&a.type!='hidden';
}
})