The $('#id'), or jQuery('#id'), function returns a special jQuery
"collection" (which acts much like an array in some ways). It does not
return an actual DOM node.
jQuery is a library that helps you "select things" (via CSS selectors)
and "do stuff" (usually "all at once") to those things.
To check if there was any DOM node "selected" use:
var o = $('#myid');
if (o.length != 0) {
// do something
}
To get the first DOM node out of a jQuery collection use:
var theNode = $('#myid')[0];
To select multiple objects pass in a string of selectors (just like in CSS):
var myNodes = $('#checkInDate-Deal, #checkOutDate-Deal');
To change an attribute of the selected nodes you can either use the
attr() method:
myNodes.attr('value', 'mm/dd/yyyy');
Or in this case, there is a shortcut method:
myNodes.val('mm/dd/yyyy');
Something to watch out for is that the each() method (when called "on"
a jQuery "collection" object) actually returns the "raw" DOM nodes,
one at a time. ie:
myNodes.each(function() {
// this == a raw DOM node
});
Karl Rudd
On Tue, Nov 25, 2008 at 12:13 PM, halcyonandon <[EMAIL PROTECTED]> wrote:
>
> Hi,
>
> I'm trying change all instances of "document.getElementById()" with
> the jQuery's DOM traversal syntax, however it breaks it everytime.
>
> A simple example is this function:
>
> rm: function(){
> var m = document.getElementById('discountMonth');
> if(m)
> m.selectedIndex = 0;
> }
>
> If I change "document.getElementById('discountMonth');" to "$
> ('#discountMonth');" or any variation of that it breaks.(I tried
> single and double quotes as well as attempting to get the element by
> class and so forth with no luck).
>
> The HTML looks like this <select onchange="$.bots.rd();return false;"
> id="discountMonth" name="deals[discountMonth]"
> class="input_deals_dropdown"><option value=""/></select>.
>
> The more troublesome issue is with a function like this
>
> rd: function (){
> var ds = new Array('checkInDate-Deal', 'checkOutDate-Deal');
> $(ds).each(function(i){
> el = document.getElementById(ds[i]);
> if(el)
> el.value = 'mm/dd/yyyy';
> });
> }, ...
>
> With the HTML looking like "<input type="text" onblur="$.bots.rm
> ();return false;" id="checkOutDate-Deal" value="mm/dd/yyyy"
> name="checkOutDate" class="input_deals"/>
>
> Any help understanding jQuery's DOM traversal especially with regard
> to array iterations would be much appreciated, thanks.
>
>