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

Reply via email to