re,
I have a simple query that works:
$("#test > fieldset > input").each(function() { })
However, I want to select "input" and "select" elements without having to write 2 "each" queries. Is this possible?
thanks.
re,
I have a simple query that works:
$("#test > fieldset > input").each(function() { })
However, I want to select "input" and "select" elements without having to write 2 "each" queries. Is this possible?
thanks.
$("#test > fieldset > :input").each(function() { })
See here: http://api.jquery.com/input-selector/
jQuery has some Good documentatiion
$("input, select").each(function() { })
The somewhat verbose solution is:
$("#test > fieldset > input, #test > fieldset > select").each(function() {
  // do stuff
});
or:
$("#test > fieldset > input").add("#test > fieldset > select").each(function() {
  // do stuff
});
The :input selector will match more than <input> and <select> elements (eg <textarea>).
jQuery provides some nice extensibility features. Here's a generic filter to select by multiple tag names:
/*
 * element: the current element being matched
 * index: index of the current element
 * match: parse tokens from the filter string
 *
 * match[0] -> full filter string
 * match[1] -> filter name
 * match[2] -> ""
 * match[3] -> filter parameter
 */
jQuery.expr[':'].tags = function(element, index, match) {
    var inputs = match[3].split(',');
    var nodeName = element.nodeName.toLowerCase();
    return $.inArray(nodeName, inputs) !== -1;
};
It has a performance hit in that the callback function will be called for each element matching upto the point of the filter, so I wouldn't recommended this for very large documents.
$("#test > fieldset > :tags(input,select)").hide();
$("#test > fieldset").children("input, select")
Here we first locate the <fieldset>, and then all <input> and <select> elements directly under it. find will work similarly, but will go through the tree, not just direct children.
You Can Use
$(document).ready(function(){
$("input, select").each(function() { 
 //do ur stuff
});
});