fix for #3688, setting type attribute on button causes IE to throw error
[jquery.git] / test / unit / core.js
index e7f09f6..289a8ba 100644 (file)
@@ -463,7 +463,7 @@ test("attr(Hash)", function() {
 });
 
 test("attr(String, Object)", function() {
-       expect(19);
+       expect(21);
        var div = jQuery("div").attr("foo", "bar"),
                fail = false;
        for ( var i = 0; i < div.size(); i++ ) {
@@ -537,6 +537,16 @@ test("attr(String, Object)", function() {
        }
        ok( thrown, "Exception thrown when trying to change type property" );
        equals( "checkbox", check.attr('type'), "Verify that you can change the type of an input element that isn't in the DOM" );
+       
+       var button = jQuery("#button");
+       var thrown = false;
+       try {
+               button.attr('type','submit');
+       } catch(e) {
+               thrown = true;
+       }
+       ok( thrown, "Exception thrown when trying to change type property" );
+       equals( "button", button.attr('type'), "Verify that you can't change the type of a button element" );
 });
 
 if ( !isLocal ) {
@@ -909,7 +919,7 @@ test("append(String|Element|Array&lt;Element&gt;|jQuery)", function() {
 });
 
 test("appendTo(String|Element|Array&lt;Element&gt;|jQuery)", function() {
-       expect(7);
+       expect(12);
        var defaultText = 'Try them out:'
        jQuery('<b>buga</b>').appendTo('#first');
        equals( jQuery("#first").text(), defaultText + 'buga', 'Check if text appending works' );
@@ -936,6 +946,27 @@ test("appendTo(String|Element|Array&lt;Element&gt;|jQuery)", function() {
        reset();
        jQuery('#select1').appendTo('#foo');
        t( 'Append select', '#foo select', ['select1'] );
+
+       reset();
+       var div = jQuery("<div/>").click(function(){
+               ok(true, "Running a cloned click.");
+       });
+       div.appendTo("#main, #moretests");
+
+       jQuery("#main div:last").click();
+       jQuery("#moretests div:last").click();
+
+       reset();
+       var div = jQuery("<div/>").appendTo("#main, #moretests");
+
+       equals( div.length, 2, "appendTo returns the inserted elements" );
+       
+       div.addClass("test");
+
+       ok( jQuery("#main div:last").hasClass("test"), "appendTo element was modified after the insertion" );
+       ok( jQuery("#moretests div:last").hasClass("test"), "appendTo element was modified after the insertion" );
+
+       reset();
 });
 
 test("prepend(String|Element|Array&lt;Element&gt;|jQuery)", function() {
@@ -975,12 +1006,12 @@ test("prependTo(String|Element|Array&lt;Element&gt;|jQuery)", function() {
 
        reset();
        expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog";
-       jQuery([document.getElementById('yahoo'), document.getElementById('first')]).prependTo('#sap');
+       jQuery([document.getElementById('first'), document.getElementById('yahoo')]).prependTo('#sap');
        equals( expected, jQuery('#sap').text(), "Check for prepending of array of elements" );
 
        reset();
-       expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog";
-       jQuery("#yahoo, #first").prependTo('#sap');
+       expected = "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog";
+       jQuery("#first, #yahoo").prependTo('#sap');
        equals( expected, jQuery('#sap').text(), "Check for prepending of jQuery object" );
 
        reset();
@@ -1069,12 +1100,12 @@ test("insertAfter(String|Element|Array&lt;Element&gt;|jQuery)", function() {
 
        reset();
        expected = "This is a normal link: YahooTry them out:diveintomark";
-       jQuery([document.getElementById('mark'), document.getElementById('first')]).insertAfter('#yahoo');
+       jQuery([document.getElementById('first'), document.getElementById('mark')]).insertAfter('#yahoo');
        equals( expected, jQuery('#en').text(), "Insert array of elements after" );
 
        reset();
-       expected = "This is a normal link: YahooTry them out:diveintomark";
-       jQuery("#mark, #first").insertAfter('#yahoo');
+       expected = "This is a normal link: YahoodiveintomarkTry them out:";
+       jQuery("#first, #mark").insertAfter('#yahoo');
        equals( expected, jQuery('#en').text(), "Insert jQuery after" );
 });
 
@@ -1667,13 +1698,6 @@ test("jQuery.each(Object,Function)", function() {
         equals( total, 3, "Looping over an object, with break" );
 });
 
-test("jQuery.prop", function() {
-       expect(2);
-       var handle = function() { return this.id };
-       equals( jQuery.prop(jQuery("#ap")[0], handle), "ap", "Check with Function argument" );
-       equals( jQuery.prop(jQuery("#ap")[0], "value"), "value", "Check with value argument" );
-});
-
 test("jQuery.className", function() {
        expect(6);
        var x = jQuery("<p>Hi</p>")[0];
@@ -1692,7 +1716,7 @@ test("jQuery.className", function() {
 });
 
 test("remove()", function() {
-       expect(6);
+       expect(7);
        jQuery("#ap").children().remove();
        ok( jQuery("#ap").text().length > 10, "Check text is not removed" );
        equals( jQuery("#ap").children().length, 0, "Check remove" );
@@ -1702,6 +1726,9 @@ test("remove()", function() {
        ok( jQuery("#ap").text().length > 10, "Check text is not removed" );
        equals( jQuery("#ap").children().length, 1, "Check filtered remove" );
 
+       jQuery("#ap").children().remove("a, code");
+       equals( jQuery("#ap").children().length, 0, "Check multi-filtered remove" );
+
        // using contents will get comments regular, text, and comment nodes
        equals( jQuery("#nonnodes").contents().length, 3, "Check node,textnode,comment remove works" );
        jQuery("#nonnodes").contents().remove();