On 1/18/11, fernando trasvina <trasv...@gmail.com> wrote: > > > On Jan 18, 2011, at 6:31 PM, Garrett Smith wrote: > >> On 1/18/11, fernando trasvina <trasv...@gmail.com> wrote: >>> >>> On Jan 18, 2011, at 2:04 PM, Garrett Smith wrote: >>> >>>> On 1/17/11, Miller Medeiros <lis...@millermedeiros.com> wrote: >>>>> On Mon, Jan 17, 2011 at 10:54 PM, Diego Perini >>>>> <diego.per...@gmail.com>wrote: >>>>> >>>>>> On Mon, Jan 17, 2011 at 11:52 PM, Miller Medeiros >>>>>> <lis...@millermedeiros.com> wrote: >>>>>>>> >>>>>>> $('#my-check-box').attr('checked', true); -> should work cross >>>>>>> browser >>>>>> if >>>>>>> it is a checkbox. >>>>>>> >>>>>>> and you can check if a checkbox is checked by using >>>>>>> `$('#my-check-box').is(':checked')`... >>>>>>> >>>>>> >>>>>> these two $() statements alone deserve a long chapter by themselves to >>>>>> exactly explain all the inconsistencies that may arise by using them >>>>>> together (probably even for checkboxes). There is also a problem with >>>>>> mixing strings and booleans to consider in your example (or in jQuery >>>>>> anyway). >>>>>> >>>>>> Comparing values obtained by direct DOM properties access >>>>>> (pseudo-selector) with values obtained by accessing HTML attributes >>>>>> through getter/setter in that way is scary at best (maybe worth a >>>>>> digest in JSMentors). >>>>>> >>>>>> >>>>> I would like to know the reason besides the fact that I passed `true` >>>>> instead of 'checked' - which I believe works just fine.. - and used >>>>> `is(':checked')` instead of `attr('checked')` - which I agree is kinda >>>>> weird. >>>>> >>>>> I have no idea how jQuery handles those things internally, but >>>>> depending >>>>> on >>>>> how the `is(':checked')` is implemented there shouldn't be any >>>>> inconsistencies (if it really checks the proper attribute instead of >>>>> doing a >>>>> selector query..). >>> >>> because any truthy value passed checks the input so 'checked' is truthy >>> >>> Also jQuery works fine setting the value via .attr method and sets the >>> correct value in the correct object and property >>> >> I've already explained why that is false. And there are a ton more >> explanations on c.l.js. >> >> An input's `checked attribute is not the same as its property. >> >> again: >> inp.checked; // property >> inp.getAttribute("checked"); // attribute value -- must be a string! > > run this with the jquery api and you will see that running .attr('checked', > true) does not sets the attribute. sets the property > so it works as it should. >
So in y9our opinion, `attr` should set not attributes but *properties*. And since that is waht `attr` does, then it is correct. Strange and irrelevant. jQuery doc has a different take on it: http://api.jquery.com/attr/ | .attr( attributeName ) Returns: String | | Description: Get the value of an attribute for the | first element in the set of matched elements. The docs for `attr' says it returns "String". According the jQUery docs, what attr returns is wrong because it is not always a string. [...] -- Garrett -- To view archived discussions from the original JSMentors Mailman list: http://www.mail-archive.com/jsmentors@jsmentors.com/ To search via a non-Google archive, visit here: http://www.mail-archive.com/jsmentors@googlegroups.com/ To unsubscribe from this group, send email to jsmentors+unsubscr...@googlegroups.com