]> source.dussan.org Git - gwtquery.git/commitdiff
Remove attribute after the property is set to null. Fixes issue 165
authorManuel Carrasco Moñino <manuel.carrasco.m@gmail.com>
Thu, 7 Feb 2013 14:59:18 +0000 (15:59 +0100)
committerManuel Carrasco Moñino <manuel.carrasco.m@gmail.com>
Thu, 7 Feb 2013 14:59:18 +0000 (15:59 +0100)
gwtquery-core/src/main/java/com/google/gwt/query/client/impl/AttributeImpl.java
gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsUtils.java
gwtquery-core/src/test/java/com/google/gwt/query/client/GQueryCoreTestGwt.java

index 76fd335c5cb27b0fa92976ca3c9bc97a6c8c405c..fcdba699f485df2e7940249ddd0b426c9f004b5c 100644 (file)
@@ -170,7 +170,6 @@ public class AttributeImpl {
       if (e.getNodeType() != 1) {
         continue;
       }
-      e.removeAttribute(key);
       if (JsUtils.hasProperty(e, key)) {
         if (BOOLEAN_ATTR_REGEX.test(key)) {
           e.setPropertyBoolean(key, false);
@@ -178,6 +177,7 @@ public class AttributeImpl {
           e.setPropertyObject(key, null);
         }
       }
+      e.removeAttribute(key);
     }
   }
 
index 962eccf1fc6ce066c112920544cd90fa1cc6e6e9..c54ab58877bc77de4c2d55944a79c20d38faf788 100644 (file)
@@ -245,13 +245,22 @@ public class JsUtils {
   }
 
   /**
-   * Check if an object have already a property with name <code>name</code>
+   * Check if an object has already a property with name <code>name</code>
    * defined.
    */
   public static native boolean hasProperty(JavaScriptObject o, String name)/*-{
     return o && name in o;
   }-*/;
-
+  
+  /**
+   * Check whether an element has an attribute, this is here since GWT Element.getAttribute
+   * implementation returns an empty string instead of null when the attribute is not 
+   * present
+   */
+  public static native boolean hasAttribute(JavaScriptObject o, String name)/*-{
+    return !!(o && o.getAttribute(name));
+  }-*/;
+  
   /**
    * Hyphenize style property names. for instance: fontName -> font-name
    */
index 34fafb993957fd7021226413dc46ec9329b39aa1..f4081011178c3f62b3eb19962ca629b80b431d05 100644 (file)
@@ -1148,6 +1148,18 @@ public class GQueryCoreTestGwt extends GWTTestCase {
     assertEquals("disabled", ie.getAttribute("disabled"));
 
   }
+  
+  public void testAttr_Issue165() {
+    $(e).html("<a href='#' title='a title'>anchor</a>");
+    Element a = $("a", e).get(0);
+    
+    assertEquals("a title", a.getAttribute("title"));
+    assertTrue(JsUtils.hasAttribute(a, "title"));
+    
+    $(a).removeAttr("title");
+    assertEquals("", a.getAttribute("title"));
+    assertFalse(JsUtils.hasAttribute(a, "title"));
+  }
 
   @DoNotRunWith({Platform.Prod})
   // FIXME: the hidden part does not work in FF nor Chrome