Merge branch 'master' of github.com:jquery/jquery into deferred
This commit is contained in:
commit
97b32d7830
10 changed files with 105 additions and 49 deletions
|
@ -1,7 +1,12 @@
|
|||
var jQuery = this.jQuery || "jQuery", // For testing .noConflict()
|
||||
$ = this.$ || "$",
|
||||
originaljQuery = jQuery,
|
||||
original$ = $;
|
||||
original$ = $,
|
||||
commonJSDefined;
|
||||
|
||||
function define(module, dependencies, callback) {
|
||||
commonJSDefined = callback();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of elements with the given IDs, eg.
|
||||
|
|
|
@ -12,7 +12,9 @@ test("Basic requirements", function() {
|
|||
});
|
||||
|
||||
test("jQuery()", function() {
|
||||
expect(23);
|
||||
expect(24);
|
||||
|
||||
strictEqual( commonJSDefined, jQuery, "CommonJS registered (Bug #7102)" );
|
||||
|
||||
// Basic constructor's behavior
|
||||
|
||||
|
@ -151,7 +153,7 @@ test("selector state", function() {
|
|||
test = jQuery("#main").eq(0);
|
||||
equals( test.selector, "#main.slice(0,1)", "#main eq Selector" );
|
||||
equals( test.context, document, "#main eq Context" );
|
||||
|
||||
|
||||
var d = "<div />";
|
||||
equals(
|
||||
jQuery(d).appendTo(jQuery(d)).selector,
|
||||
|
@ -253,38 +255,38 @@ test("isPlainObject", function() {
|
|||
|
||||
// The use case that we want to match
|
||||
ok(jQuery.isPlainObject({}), "{}");
|
||||
|
||||
|
||||
// Not objects shouldn't be matched
|
||||
ok(!jQuery.isPlainObject(""), "string");
|
||||
ok(!jQuery.isPlainObject(0) && !jQuery.isPlainObject(1), "number");
|
||||
ok(!jQuery.isPlainObject(true) && !jQuery.isPlainObject(false), "boolean");
|
||||
ok(!jQuery.isPlainObject(null), "null");
|
||||
ok(!jQuery.isPlainObject(undefined), "undefined");
|
||||
|
||||
|
||||
// Arrays shouldn't be matched
|
||||
ok(!jQuery.isPlainObject([]), "array");
|
||||
|
||||
|
||||
// Instantiated objects shouldn't be matched
|
||||
ok(!jQuery.isPlainObject(new Date), "new Date");
|
||||
|
||||
|
||||
var fn = function(){};
|
||||
|
||||
|
||||
// Functions shouldn't be matched
|
||||
ok(!jQuery.isPlainObject(fn), "fn");
|
||||
|
||||
|
||||
// Again, instantiated objects shouldn't be matched
|
||||
ok(!jQuery.isPlainObject(new fn), "new fn (no methods)");
|
||||
|
||||
|
||||
// Makes the function a little more realistic
|
||||
// (and harder to detect, incidentally)
|
||||
fn.prototype = {someMethod: function(){}};
|
||||
|
||||
|
||||
// Again, instantiated objects shouldn't be matched
|
||||
ok(!jQuery.isPlainObject(new fn), "new fn");
|
||||
|
||||
// DOM Element
|
||||
ok(!jQuery.isPlainObject(document.createElement("div")), "DOM Element");
|
||||
|
||||
|
||||
// Window
|
||||
ok(!jQuery.isPlainObject(window), "window");
|
||||
|
||||
|
@ -298,7 +300,7 @@ test("isPlainObject", function() {
|
|||
document.body.removeChild( iframe );
|
||||
start();
|
||||
};
|
||||
|
||||
|
||||
var doc = iframe.contentDocument || iframe.contentWindow.document;
|
||||
doc.open();
|
||||
doc.write("<body onload='window.parent.iframeDone(Object);'>");
|
||||
|
@ -659,7 +661,7 @@ test("jQuery.merge()", function() {
|
|||
|
||||
// Fixed at [5998], #3641
|
||||
same( parse([-2,-1], [0,1,2]), [-2,-1,0,1,2], "Second array including a zero (falsy)");
|
||||
|
||||
|
||||
// After fixing #5527
|
||||
same( parse([], [null, undefined]), [null, undefined], "Second array including null and undefined values");
|
||||
same( parse({length:0}, [1,2]), {length:2, 0:1, 1:2}, "First array like");
|
||||
|
@ -694,7 +696,7 @@ test("jQuery.extend(Object, Object)", function() {
|
|||
equals( deep1.foo2, document, "Make sure that a deep clone was not attempted on the document" );
|
||||
|
||||
ok( jQuery.extend(true, {}, nestedarray).arr !== arr, "Deep extend of object must clone child array" );
|
||||
|
||||
|
||||
// #5991
|
||||
ok( jQuery.isArray( jQuery.extend(true, { arr: {} }, nestedarray).arr ), "Cloned array heve to be an Array" );
|
||||
ok( jQuery.isPlainObject( jQuery.extend(true, { arr: arr }, { arr: {} }).arr ), "Cloned object heve to be an plain object" );
|
||||
|
@ -715,13 +717,13 @@ test("jQuery.extend(Object, Object)", function() {
|
|||
empty = {};
|
||||
jQuery.extend(true, empty, optionsWithCustomObject);
|
||||
ok( empty.foo && empty.foo.date === customObject, "Custom objects copy correctly (no methods)" );
|
||||
|
||||
|
||||
// Makes the class a little more realistic
|
||||
myKlass.prototype = { someMethod: function(){} };
|
||||
empty = {};
|
||||
jQuery.extend(true, empty, optionsWithCustomObject);
|
||||
ok( empty.foo && empty.foo.date === customObject, "Custom objects copy correctly" );
|
||||
|
||||
|
||||
var ret = jQuery.extend(true, { foo: 4 }, { foo: new Number(5) } );
|
||||
ok( ret.foo == 5, "Wrapped numbers copy correctly" );
|
||||
|
||||
|
@ -849,10 +851,10 @@ test("jQuery.makeArray", function(){
|
|||
|
||||
test("jQuery.isEmptyObject", function(){
|
||||
expect(2);
|
||||
|
||||
|
||||
equals(true, jQuery.isEmptyObject({}), "isEmptyObject on empty object literal" );
|
||||
equals(false, jQuery.isEmptyObject({a:1}), "isEmptyObject on non-empty object literal" );
|
||||
|
||||
|
||||
// What about this ?
|
||||
// equals(true, jQuery.isEmptyObject(null), "isEmptyObject on null" );
|
||||
});
|
||||
|
@ -878,23 +880,23 @@ test("jQuery.proxy", function(){
|
|||
|
||||
test("jQuery.parseJSON", function(){
|
||||
expect(8);
|
||||
|
||||
|
||||
equals( jQuery.parseJSON(), null, "Nothing in, null out." );
|
||||
equals( jQuery.parseJSON( null ), null, "Nothing in, null out." );
|
||||
equals( jQuery.parseJSON( "" ), null, "Nothing in, null out." );
|
||||
|
||||
|
||||
same( jQuery.parseJSON("{}"), {}, "Plain object parsing." );
|
||||
same( jQuery.parseJSON('{"test":1}'), {"test":1}, "Plain object parsing." );
|
||||
|
||||
same( jQuery.parseJSON('\n{"test":1}'), {"test":1}, "Make sure leading whitespaces are handled." );
|
||||
|
||||
|
||||
try {
|
||||
jQuery.parseJSON("{a:1}");
|
||||
ok( false, "Test malformed JSON string." );
|
||||
} catch( e ) {
|
||||
ok( true, "Test malformed JSON string." );
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
jQuery.parseJSON("{'a':1}");
|
||||
ok( false, "Test malformed JSON string." );
|
||||
|
|
|
@ -295,6 +295,41 @@ test("live/delegate immediate propagation", function() {
|
|||
$p.undelegate( "click" );
|
||||
});
|
||||
|
||||
test("bind/delegate bubbling, isDefaultPrevented (Bug #7793)", function() {
|
||||
expect(2);
|
||||
var $anchor2 = jQuery( "#anchor2" ),
|
||||
$main = jQuery( "#main" ),
|
||||
fakeClick = function($jq) {
|
||||
// Use a native click so we don't get jQuery simulated bubbling
|
||||
if ( document.createEvent ) {
|
||||
var e = document.createEvent( "MouseEvents" );
|
||||
e.initEvent( "click", true, true );
|
||||
$jq[0].dispatchEvent(e);
|
||||
}
|
||||
else if ( $jq[0].click ) {
|
||||
$jq[0].click(); // IE
|
||||
}
|
||||
};
|
||||
$anchor2.click(function(e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
$main.delegate("#foo", "click", function(e) {
|
||||
equals( e.isDefaultPrevented(), true, "isDefaultPrevented true passed to bubbled event" );
|
||||
});
|
||||
fakeClick( $anchor2 );
|
||||
$anchor2.unbind( "click" );
|
||||
$main.undelegate( "click" );
|
||||
$anchor2.click(function(e) {
|
||||
// Let the default action occur
|
||||
});
|
||||
$main.delegate("#foo", "click", function(e) {
|
||||
equals( e.isDefaultPrevented(), false, "isDefaultPrevented false passed to bubbled event" );
|
||||
});
|
||||
fakeClick( $anchor2 );
|
||||
$anchor2.unbind( "click" );
|
||||
$main.undelegate( "click" );
|
||||
});
|
||||
|
||||
test("bind(), iframes", function() {
|
||||
// events don't work with iframes, see #939 - this test fails in IE because of contentDocument
|
||||
var doc = jQuery("#loadediframe").contents();
|
||||
|
|
|
@ -1247,3 +1247,20 @@ test("jQuery.cleanData", function() {
|
|||
return div;
|
||||
}
|
||||
});
|
||||
|
||||
test("jQuery.buildFragment - no plain-text caching (Bug #6779)", function() {
|
||||
expect(1);
|
||||
|
||||
// DOM manipulation fails if added text matches an Object method
|
||||
var $f = jQuery( "<div />" ).appendTo( "#main" ),
|
||||
bad = [ "start-", "toString", "hasOwnProperty", "append", "here&there!", "-end" ];
|
||||
|
||||
for ( var i=0; i < bad.length; i++ ) {
|
||||
try {
|
||||
$f.append( bad[i] );
|
||||
}
|
||||
catch(e) {}
|
||||
}
|
||||
equals($f.text(), bad.join(''), "Cached strings that match Object properties");
|
||||
$f.remove();
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue