Bug Tracker

Ticket #6341: 0001-Ensure-attr-name-null-works-consistently-across-brow.patch

File 0001-Ensure-attr-name-null-works-consistently-across-brow.patch, 1.7 KB (added by DouglasMeyer, 10 years ago)
  • src/attributes.js

    From 2e3905aa43c7678a3d6d436eed90044dcd5397ca Mon Sep 17 00:00:00 2001
    From: Douglas Meyer <douglas.meyer@centro.net>
    Date: Tue, 23 Mar 2010 21:50:54 -0500
    Subject: [PATCH] Ensure attr('name', null) works consistently across browsers (#6341)
    
    ---
     src/attributes.js       |    6 +++++-
     test/unit/attributes.js |    4 +++-
     2 files changed, 8 insertions(+), 2 deletions(-)
    
    diff --git a/src/attributes.js b/src/attributes.js
    index aca9e05..2e90112 100644
    a b jQuery.extend({ 
    285285                                                jQuery.error( "type property can't be changed" );
    286286                                        }
    287287
    288                                         elem[ name ] = value;
     288                                        if (value === null) {
     289                                                elem.removeAttribute( name );
     290                                        } else {
     291                                                elem[ name ] = value;
     292                                        }
    289293                                }
    290294
    291295                                // browsers index elements by id/name on forms, give priority to attributes.
  • test/unit/attributes.js

    diff --git a/test/unit/attributes.js b/test/unit/attributes.js
    index 21d3d94..c204eff 100644
    a b test("attr(Hash)", function() { 
    9797});
    9898
    9999test("attr(String, Object)", function() {
    100         expect(23);
     100        expect(24);
    101101        var div = jQuery("div").attr("foo", "bar"),
    102102                fail = false;
    103103        for ( var i = 0; i < div.size(); i++ ) {
    test("attr(String, Object)", function() { 
    113113
    114114        jQuery("#name").attr('name', 'something');
    115115        equals( jQuery("#name").attr('name'), 'something', 'Set name attribute' );
     116        jQuery("#name").attr('title', null);
     117        equals( jQuery("#name").attr('title'), '', 'Remove name attribute' );
    116118        jQuery("#check2").attr('checked', true);
    117119        equals( document.getElementById('check2').checked, true, 'Set checked attribute' );
    118120        jQuery("#check2").attr('checked', false);