mirror of
https://github.com/jquery/jquery.git
synced 2026-04-20 03:01:22 -04:00
Remove .live() tests now in Migrate plugin.
This commit is contained in:
@@ -14,7 +14,7 @@ test("null or undefined handler", function() {
|
||||
} catch (e) {}
|
||||
});
|
||||
|
||||
test("bind(),live(),delegate() with non-null,defined data", function() {
|
||||
test("bind(),on(),delegate() with non-null,defined data", function() {
|
||||
|
||||
expect(3);
|
||||
|
||||
@@ -22,15 +22,15 @@ test("bind(),live(),delegate() with non-null,defined data", function() {
|
||||
equal( data, 0, "non-null, defined data (zero) is correctly passed" );
|
||||
};
|
||||
|
||||
jQuery("#foo").bind("foo", handler);
|
||||
jQuery("#foo").live("foo", handler);
|
||||
jQuery("div").delegate("#foo", "foo", handler);
|
||||
jQuery("#foo").bind("foo.bind", handler);
|
||||
jQuery("#foo").on("foo.on", handler);
|
||||
jQuery("div").delegate("#foo", "foo.delegate", handler);
|
||||
|
||||
jQuery("#foo").trigger("foo", 0);
|
||||
|
||||
jQuery("#foo").unbind("foo", handler);
|
||||
jQuery("#foo").die("foo", handler);
|
||||
jQuery("div").undelegate("#foo", "foo");
|
||||
jQuery("#foo").unbind("foo.bind", handler);
|
||||
jQuery("#foo").off("foo.on", handler);
|
||||
jQuery("div").undelegate("#foo", "foo.delegate");
|
||||
|
||||
});
|
||||
|
||||
@@ -307,7 +307,7 @@ test("bind/one/unbind(Object)", function(){
|
||||
equal( mouseoverCounter, 4, "bind(Object)" );
|
||||
});
|
||||
|
||||
test("live/die(Object), delegate/undelegate(String, Object)", function() {
|
||||
test("on/off(Object), delegate/undelegate(String, Object)", function() {
|
||||
expect(6);
|
||||
|
||||
var clickCounter = 0, mouseoverCounter = 0,
|
||||
@@ -326,12 +326,12 @@ test("live/die(Object), delegate/undelegate(String, Object)", function() {
|
||||
$a.trigger("click").trigger("mouseover");
|
||||
}
|
||||
|
||||
$a.live( events );
|
||||
jQuery( document ).on( events, "#firstp a:first" );
|
||||
$p.delegate( "a", events, 2 );
|
||||
|
||||
trigger();
|
||||
equal( clickCounter, 3, "live/delegate" );
|
||||
equal( mouseoverCounter, 3, "live/delegate" );
|
||||
equal( clickCounter, 3, "on/delegate" );
|
||||
equal( mouseoverCounter, 3, "on/delegate" );
|
||||
|
||||
$p.undelegate( "a", events );
|
||||
|
||||
@@ -339,29 +339,29 @@ test("live/die(Object), delegate/undelegate(String, Object)", function() {
|
||||
equal( clickCounter, 4, "undelegate" );
|
||||
equal( mouseoverCounter, 4, "undelegate" );
|
||||
|
||||
$a.die( events );
|
||||
jQuery( document ).off( events, "#firstp a:first" );
|
||||
|
||||
trigger();
|
||||
equal( clickCounter, 4, "die" );
|
||||
equal( mouseoverCounter, 4, "die" );
|
||||
equal( clickCounter, 4, "off" );
|
||||
equal( mouseoverCounter, 4, "off" );
|
||||
});
|
||||
|
||||
test("live/delegate immediate propagation", function() {
|
||||
test("on/delegate immediate propagation", function() {
|
||||
expect(2);
|
||||
|
||||
var $p = jQuery("#firstp"), $a = $p.find("a:first"), lastClick;
|
||||
|
||||
lastClick = "";
|
||||
$a.live( "click", function(e) {
|
||||
jQuery( document ).on( "click", "#firstp a:first", function(e) {
|
||||
lastClick = "click1";
|
||||
e.stopImmediatePropagation();
|
||||
});
|
||||
$a.live( "click", function(e) {
|
||||
jQuery( document ).on( "click", "#firstp a:first", function(e) {
|
||||
lastClick = "click2";
|
||||
});
|
||||
$a.trigger( "click" );
|
||||
equal( lastClick, "click1", "live stopImmediatePropagation" );
|
||||
$a.die( "click" );
|
||||
equal( lastClick, "click1", "on stopImmediatePropagation" );
|
||||
jQuery( document ).off( "click", "#firstp a:first" );
|
||||
|
||||
lastClick = "";
|
||||
$p.delegate( "a", "click", function(e) {
|
||||
@@ -631,26 +631,6 @@ test("bind(name, false), unbind(name, false)", function() {
|
||||
jQuery("#qunit-fixture").unbind("click");
|
||||
});
|
||||
|
||||
test("live(name, false), die(name, false)", function() {
|
||||
expect(3);
|
||||
|
||||
var main = 0;
|
||||
jQuery("#qunit-fixture").live("click", function(e){ main++; });
|
||||
jQuery("#ap").trigger("click");
|
||||
equal( main, 1, "Verify that the trigger happened correctly." );
|
||||
|
||||
main = 0;
|
||||
jQuery("#ap").live("click", false);
|
||||
jQuery("#ap").trigger("click");
|
||||
equal( main, 0, "Verify that no bubble happened." );
|
||||
|
||||
main = 0;
|
||||
jQuery("#ap").die("click", false);
|
||||
jQuery("#ap").trigger("click");
|
||||
equal( main, 1, "Verify that the trigger happened correctly." );
|
||||
jQuery("#qunit-fixture").die("click");
|
||||
});
|
||||
|
||||
test("delegate(selector, name, false), undelegate(selector, name, false)", function() {
|
||||
expect(3);
|
||||
|
||||
@@ -979,21 +959,19 @@ test("trigger(type, [data], [fn])", function() {
|
||||
};
|
||||
|
||||
|
||||
$elem.live("mouseenter", function(){
|
||||
ok( true, "Trigger mouseenter bound by live" );
|
||||
jQuery( document ).on("mouseenter", "#firstp", function(){
|
||||
ok( true, "Trigger mouseenter bound by on" );
|
||||
});
|
||||
|
||||
$elem.live("mouseleave", function(){
|
||||
ok( true, "Trigger mouseleave bound by live" );
|
||||
jQuery( document ).on("mouseleave", "#firstp", function(){
|
||||
ok( true, "Trigger mouseleave bound by on" );
|
||||
});
|
||||
|
||||
$elem.trigger("mouseenter");
|
||||
|
||||
$elem.trigger("mouseleave");
|
||||
|
||||
$elem.die("mouseenter");
|
||||
|
||||
$elem.die("mouseleave");
|
||||
jQuery( document ).off( "mouseenter mouseleave", "#firstp");
|
||||
|
||||
// Triggers handlrs and native
|
||||
// Trigger 5
|
||||
@@ -1486,537 +1464,6 @@ test("jQuery.Event.currentTarget", function(){
|
||||
.off( "click" );
|
||||
});
|
||||
|
||||
test(".live()/.die()", function() {
|
||||
expect(66);
|
||||
|
||||
var submit = 0, div = 0, livea = 0, liveb = 0;
|
||||
|
||||
jQuery("#qunit-fixture div").live("submit", function(){ submit++; return false; });
|
||||
jQuery("#qunit-fixture div").live("click", function(){ div++; });
|
||||
jQuery("div#nothiddendiv").live("click", function(){ livea++; });
|
||||
jQuery("div#nothiddendivchild").live("click", function(){ liveb++; });
|
||||
|
||||
// Nothing should trigger on the body
|
||||
jQuery("body").trigger("click");
|
||||
equal( submit, 0, "Click on body" );
|
||||
equal( div, 0, "Click on body" );
|
||||
equal( livea, 0, "Click on body" );
|
||||
equal( liveb, 0, "Click on body" );
|
||||
|
||||
// This should trigger two events
|
||||
submit = 0; div = 0; livea = 0; liveb = 0;
|
||||
jQuery("div#nothiddendiv").trigger("click");
|
||||
equal( submit, 0, "Click on div" );
|
||||
equal( div, 1, "Click on div" );
|
||||
equal( livea, 1, "Click on div" );
|
||||
equal( liveb, 0, "Click on div" );
|
||||
|
||||
// This should trigger three events (w/ bubbling)
|
||||
submit = 0; div = 0; livea = 0; liveb = 0;
|
||||
jQuery("div#nothiddendivchild").trigger("click");
|
||||
equal( submit, 0, "Click on inner div" );
|
||||
equal( div, 2, "Click on inner div" );
|
||||
equal( livea, 1, "Click on inner div" );
|
||||
equal( liveb, 1, "Click on inner div" );
|
||||
|
||||
// This should trigger one submit
|
||||
submit = 0; div = 0; livea = 0; liveb = 0;
|
||||
jQuery("div#nothiddendivchild").trigger("submit");
|
||||
equal( submit, 1, "Submit on div" );
|
||||
equal( div, 0, "Submit on div" );
|
||||
equal( livea, 0, "Submit on div" );
|
||||
equal( liveb, 0, "Submit on div" );
|
||||
|
||||
// Make sure no other events were removed in the process
|
||||
submit = 0; div = 0; livea = 0; liveb = 0;
|
||||
jQuery("div#nothiddendivchild").trigger("click");
|
||||
equal( submit, 0, "die Click on inner div" );
|
||||
equal( div, 2, "die Click on inner div" );
|
||||
equal( livea, 1, "die Click on inner div" );
|
||||
equal( liveb, 1, "die Click on inner div" );
|
||||
|
||||
// Now make sure that the removal works
|
||||
submit = 0; div = 0; livea = 0; liveb = 0;
|
||||
jQuery("div#nothiddendivchild").die("click");
|
||||
jQuery("div#nothiddendivchild").trigger("click");
|
||||
equal( submit, 0, "die Click on inner div" );
|
||||
equal( div, 2, "die Click on inner div" );
|
||||
equal( livea, 1, "die Click on inner div" );
|
||||
equal( liveb, 0, "die Click on inner div" );
|
||||
|
||||
// Make sure that the click wasn't removed too early
|
||||
submit = 0; div = 0; livea = 0; liveb = 0;
|
||||
jQuery("div#nothiddendiv").trigger("click");
|
||||
equal( submit, 0, "die Click on inner div" );
|
||||
equal( div, 1, "die Click on inner div" );
|
||||
equal( livea, 1, "die Click on inner div" );
|
||||
equal( liveb, 0, "die Click on inner div" );
|
||||
|
||||
// Make sure that stopPropgation doesn't stop live events
|
||||
submit = 0; div = 0; livea = 0; liveb = 0;
|
||||
jQuery("div#nothiddendivchild").live("click", function(e){ liveb++; e.stopPropagation(); });
|
||||
jQuery("div#nothiddendivchild").trigger("click");
|
||||
equal( submit, 0, "stopPropagation Click on inner div" );
|
||||
equal( div, 1, "stopPropagation Click on inner div" );
|
||||
equal( livea, 0, "stopPropagation Click on inner div" );
|
||||
equal( liveb, 1, "stopPropagation Click on inner div" );
|
||||
|
||||
// Make sure click events only fire with primary click
|
||||
submit = 0; div = 0; livea = 0; liveb = 0;
|
||||
var event = jQuery.Event("click");
|
||||
event.button = 1;
|
||||
jQuery("div#nothiddendiv").trigger(event);
|
||||
|
||||
equal( livea, 0, "live secondary click" );
|
||||
|
||||
jQuery("div#nothiddendivchild").die("click");
|
||||
jQuery("div#nothiddendiv").die("click");
|
||||
jQuery("#qunit-fixture div").die("click");
|
||||
jQuery("#qunit-fixture div").die("submit");
|
||||
|
||||
// Test binding with a different context
|
||||
var clicked = 0, container = jQuery("#qunit-fixture")[0];
|
||||
jQuery("#foo", container).live("click", function(e){ clicked++; });
|
||||
jQuery("#qunit-fixture div").trigger("click");
|
||||
jQuery("#foo").trigger("click");
|
||||
jQuery("#qunit-fixture").trigger("click");
|
||||
jQuery("body").trigger("click");
|
||||
equal( clicked, 2, "live with a context" );
|
||||
|
||||
// Test unbinding with a different context
|
||||
jQuery("#foo", container).die("click");
|
||||
jQuery("#foo").trigger("click");
|
||||
equal( clicked, 2, "die with a context");
|
||||
|
||||
// Test binding with event data
|
||||
jQuery("#foo").live("click", true, function(e){ equal( e.data, true, "live with event data" ); });
|
||||
jQuery("#foo").trigger("click").die("click");
|
||||
|
||||
// Test binding with trigger data
|
||||
jQuery("#foo").live("click", function(e, data){ equal( data, true, "live with trigger data" ); });
|
||||
jQuery("#foo").trigger("click", true).die("click");
|
||||
|
||||
// Test binding with different this object
|
||||
jQuery("#foo").live("click", jQuery.proxy(function(e){ equal( this.foo, "bar", "live with event scope" ); }, { foo: "bar" }));
|
||||
jQuery("#foo").trigger("click").die("click");
|
||||
|
||||
// Test binding with different this object, event data, and trigger data
|
||||
jQuery("#foo").live("click", true, jQuery.proxy(function(e, data){
|
||||
equal( e.data, true, "live with with different this object, event data, and trigger data" );
|
||||
equal( this["foo"], "bar", "live with with different this object, event data, and trigger data" );
|
||||
equal( data, true, "live with with different this object, event data, and trigger data");
|
||||
}, { "foo": "bar" }));
|
||||
jQuery("#foo").trigger("click", true).die("click");
|
||||
|
||||
// Verify that return false prevents default action
|
||||
jQuery("#anchor2").live("click", function(){ return false; });
|
||||
var hash = window.location.hash;
|
||||
jQuery("#anchor2").trigger("click");
|
||||
equal( window.location.hash, hash, "return false worked" );
|
||||
jQuery("#anchor2").die("click");
|
||||
|
||||
// Verify that .preventDefault() prevents default action
|
||||
jQuery("#anchor2").live("click", function(e){ e.preventDefault(); });
|
||||
hash = window.location.hash;
|
||||
jQuery("#anchor2").trigger("click");
|
||||
equal( window.location.hash, hash, "e.preventDefault() worked" );
|
||||
jQuery("#anchor2").die("click");
|
||||
|
||||
// Test binding the same handler to multiple points
|
||||
var called = 0;
|
||||
function callback(){ called++; return false; }
|
||||
|
||||
jQuery("#nothiddendiv").live("click", callback);
|
||||
jQuery("#anchor2").live("click", callback);
|
||||
|
||||
jQuery("#nothiddendiv").trigger("click");
|
||||
equal( called, 1, "Verify that only one click occurred." );
|
||||
|
||||
called = 0;
|
||||
jQuery("#anchor2").trigger("click");
|
||||
equal( called, 1, "Verify that only one click occurred." );
|
||||
|
||||
// Make sure that only one callback is removed
|
||||
jQuery("#anchor2").die("click", callback);
|
||||
|
||||
called = 0;
|
||||
jQuery("#nothiddendiv").trigger("click");
|
||||
equal( called, 1, "Verify that only one click occurred." );
|
||||
|
||||
called = 0;
|
||||
jQuery("#anchor2").trigger("click");
|
||||
equal( called, 0, "Verify that no click occurred." );
|
||||
|
||||
// Make sure that it still works if the selector is the same,
|
||||
// but the event type is different
|
||||
jQuery("#nothiddendiv").live("foo", callback);
|
||||
|
||||
// Cleanup
|
||||
jQuery("#nothiddendiv").die("click", callback);
|
||||
|
||||
called = 0;
|
||||
jQuery("#nothiddendiv").trigger("click");
|
||||
equal( called, 0, "Verify that no click occurred." );
|
||||
|
||||
called = 0;
|
||||
jQuery("#nothiddendiv").trigger("foo");
|
||||
equal( called, 1, "Verify that one foo occurred." );
|
||||
|
||||
// Cleanup
|
||||
jQuery("#nothiddendiv").die("foo", callback);
|
||||
|
||||
// Make sure we don't loose the target by DOM modifications
|
||||
// after the bubble already reached the liveHandler
|
||||
var livec = 0, elemDiv = jQuery("#nothiddendivchild").html("<span></span>").get(0);
|
||||
|
||||
jQuery("#nothiddendivchild").live("click", function(e){ jQuery("#nothiddendivchild").html(""); });
|
||||
jQuery("#nothiddendivchild").live("click", function(e){ if(e.target) {livec++;} });
|
||||
|
||||
jQuery("#nothiddendiv span").click();
|
||||
equal( jQuery("#nothiddendiv span").length, 0, "Verify that first handler occurred and modified the DOM." );
|
||||
equal( livec, 1, "Verify that second handler occurred even with nuked target." );
|
||||
|
||||
// Cleanup
|
||||
jQuery("#nothiddendivchild").die("click");
|
||||
|
||||
// Verify that .live() ocurs and cancel buble in the same order as
|
||||
// we would expect .bind() and .click() without delegation
|
||||
var lived = 0, livee = 0;
|
||||
|
||||
// bind one pair in one order
|
||||
jQuery("span#liveSpan1 a").live("click", function(){ lived++; return false; });
|
||||
jQuery("span#liveSpan1").live("click", function(){ livee++; });
|
||||
|
||||
jQuery("span#liveSpan1 a").click();
|
||||
equal( lived, 1, "Verify that only one first handler occurred." );
|
||||
equal( livee, 0, "Verify that second handler doesn't." );
|
||||
|
||||
// and one pair in inverse
|
||||
jQuery("span#liveSpan2").live("click", function(){ livee++; });
|
||||
jQuery("span#liveSpan2 a").live("click", function(){ lived++; return false; });
|
||||
|
||||
lived = 0;
|
||||
livee = 0;
|
||||
jQuery("span#liveSpan2 a").click();
|
||||
equal( lived, 1, "Verify that only one first handler occurred." );
|
||||
equal( livee, 0, "Verify that second handler doesn't." );
|
||||
|
||||
// Cleanup
|
||||
jQuery("span#liveSpan1 a").die("click");
|
||||
jQuery("span#liveSpan1").die("click");
|
||||
jQuery("span#liveSpan2 a").die("click");
|
||||
jQuery("span#liveSpan2").die("click");
|
||||
|
||||
// Test this, target and currentTarget are correct
|
||||
jQuery("span#liveSpan1").live("click", function(e){
|
||||
equal( this.id, "liveSpan1", "Check the this within a live handler" );
|
||||
equal( e.currentTarget.id, "liveSpan1", "Check the event.currentTarget within a live handler" );
|
||||
equal( e.delegateTarget, document, "Check the event.delegateTarget within a live handler" );
|
||||
equal( e.target.nodeName.toUpperCase(), "A", "Check the event.target within a live handler" );
|
||||
});
|
||||
|
||||
jQuery("span#liveSpan1 a").click();
|
||||
|
||||
jQuery("span#liveSpan1").die("click");
|
||||
|
||||
// Work with deep selectors
|
||||
livee = 0;
|
||||
|
||||
function clickB(){ livee++; }
|
||||
|
||||
jQuery("#nothiddendiv div").live("click", function(){ livee++; });
|
||||
jQuery("#nothiddendiv div").live("click", clickB);
|
||||
jQuery("#nothiddendiv div").live("mouseover", function(){ livee++; });
|
||||
|
||||
equal( livee, 0, "No clicks, deep selector." );
|
||||
|
||||
livee = 0;
|
||||
jQuery("#nothiddendivchild").trigger("click");
|
||||
equal( livee, 2, "Click, deep selector." );
|
||||
|
||||
livee = 0;
|
||||
jQuery("#nothiddendivchild").trigger("mouseover");
|
||||
equal( livee, 1, "Mouseover, deep selector." );
|
||||
|
||||
jQuery("#nothiddendiv div").die("mouseover");
|
||||
|
||||
livee = 0;
|
||||
jQuery("#nothiddendivchild").trigger("click");
|
||||
equal( livee, 2, "Click, deep selector." );
|
||||
|
||||
livee = 0;
|
||||
jQuery("#nothiddendivchild").trigger("mouseover");
|
||||
equal( livee, 0, "Mouseover, deep selector." );
|
||||
|
||||
jQuery("#nothiddendiv div").die("click", clickB);
|
||||
|
||||
livee = 0;
|
||||
jQuery("#nothiddendivchild").trigger("click");
|
||||
equal( livee, 1, "Click, deep selector." );
|
||||
|
||||
jQuery("#nothiddendiv div").die("click");
|
||||
|
||||
// blur a non-input element, we should force-fire its handlers
|
||||
// regardless of whether it's burring or not (unlike browsers)
|
||||
jQuery("#nothiddendiv div")
|
||||
.live("blur", function(){
|
||||
ok( true, "Live div trigger blur." );
|
||||
})
|
||||
.trigger("blur")
|
||||
.die("blur");
|
||||
});
|
||||
|
||||
test("die all bound events", function(){
|
||||
expect(1);
|
||||
|
||||
var count = 0;
|
||||
var div = jQuery("div#nothiddendivchild");
|
||||
|
||||
div.live("click submit", function(){ count++; });
|
||||
div.die();
|
||||
|
||||
div.trigger("click");
|
||||
div.trigger("submit");
|
||||
|
||||
equal( count, 0, "Make sure no events were triggered." );
|
||||
});
|
||||
|
||||
test("live with multiple events", function(){
|
||||
expect(1);
|
||||
|
||||
var count = 0;
|
||||
var div = jQuery("div#nothiddendivchild");
|
||||
|
||||
div.live("click submit", function(){ count++; });
|
||||
|
||||
div.trigger("click");
|
||||
div.trigger("submit");
|
||||
|
||||
equal( count, 2, "Make sure both the click and submit were triggered." );
|
||||
|
||||
// manually clean up events from elements outside the fixture
|
||||
div.die();
|
||||
});
|
||||
|
||||
test("live with namespaces", function(){
|
||||
expect(15);
|
||||
|
||||
var count1 = 0, count2 = 0;
|
||||
|
||||
jQuery("#liveSpan1").live("foo.bar", function(e){
|
||||
equal( e.namespace, "bar", "namespace is bar" );
|
||||
count1++;
|
||||
});
|
||||
|
||||
jQuery("#liveSpan1").live("foo.zed", function(e){
|
||||
equal( e.namespace, "zed", "namespace is zed" );
|
||||
count2++;
|
||||
});
|
||||
|
||||
jQuery("#liveSpan1").trigger("foo.bar");
|
||||
equal( count1, 1, "Got live foo.bar" );
|
||||
equal( count2, 0, "Got live foo.bar" );
|
||||
|
||||
count1 = 0; count2 = 0;
|
||||
|
||||
jQuery("#liveSpan1").trigger("foo.zed");
|
||||
equal( count1, 0, "Got live foo.zed" );
|
||||
equal( count2, 1, "Got live foo.zed" );
|
||||
|
||||
//remove one
|
||||
count1 = 0; count2 = 0;
|
||||
|
||||
jQuery("#liveSpan1").die("foo.zed");
|
||||
jQuery("#liveSpan1").trigger("foo.bar");
|
||||
|
||||
equal( count1, 1, "Got live foo.bar after dieing foo.zed" );
|
||||
equal( count2, 0, "Got live foo.bar after dieing foo.zed" );
|
||||
|
||||
count1 = 0; count2 = 0;
|
||||
|
||||
jQuery("#liveSpan1").trigger("foo.zed");
|
||||
equal( count1, 0, "Got live foo.zed" );
|
||||
equal( count2, 0, "Got live foo.zed" );
|
||||
|
||||
//remove the other
|
||||
jQuery("#liveSpan1").die("foo.bar");
|
||||
|
||||
count1 = 0; count2 = 0;
|
||||
|
||||
jQuery("#liveSpan1").trigger("foo.bar");
|
||||
equal( count1, 0, "Did not respond to foo.bar after dieing it" );
|
||||
equal( count2, 0, "Did not respond to foo.bar after dieing it" );
|
||||
|
||||
jQuery("#liveSpan1").trigger("foo.zed");
|
||||
equal( count1, 0, "Did not trigger foo.zed again" );
|
||||
equal( count2, 0, "Did not trigger foo.zed again" );
|
||||
});
|
||||
|
||||
test("live with change", function(){
|
||||
expect(8);
|
||||
|
||||
var selectChange = 0, checkboxChange = 0;
|
||||
|
||||
var select = jQuery("select[name='S1']");
|
||||
select.live("change", function() {
|
||||
selectChange++;
|
||||
});
|
||||
|
||||
var checkbox = jQuery("#check2"),
|
||||
checkboxFunction = function(){
|
||||
checkboxChange++;
|
||||
};
|
||||
checkbox.live("change", checkboxFunction);
|
||||
|
||||
// test click on select
|
||||
|
||||
// second click that changed it
|
||||
selectChange = 0;
|
||||
select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
|
||||
select.trigger("change");
|
||||
equal( selectChange, 1, "Change on click." );
|
||||
|
||||
// test keys on select
|
||||
selectChange = 0;
|
||||
select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
|
||||
select.trigger("change");
|
||||
equal( selectChange, 1, "Change on keyup." );
|
||||
|
||||
// test click on checkbox
|
||||
checkbox.trigger("change");
|
||||
equal( checkboxChange, 1, "Change on checkbox." );
|
||||
|
||||
// test blur/focus on text
|
||||
var text = jQuery("#name"), textChange = 0, oldTextVal = text.val();
|
||||
text.live("change", function() {
|
||||
textChange++;
|
||||
});
|
||||
|
||||
text.val(oldTextVal+"foo");
|
||||
text.trigger("change");
|
||||
equal( textChange, 1, "Change on text input." );
|
||||
|
||||
text.val(oldTextVal);
|
||||
text.die("change");
|
||||
|
||||
// test blur/focus on password
|
||||
var password = jQuery("#name"), passwordChange = 0, oldPasswordVal = password.val();
|
||||
password.live("change", function() {
|
||||
passwordChange++;
|
||||
});
|
||||
|
||||
password.val(oldPasswordVal + "foo");
|
||||
password.trigger("change");
|
||||
equal( passwordChange, 1, "Change on password input." );
|
||||
|
||||
password.val(oldPasswordVal);
|
||||
password.die("change");
|
||||
|
||||
// make sure die works
|
||||
|
||||
// die all changes
|
||||
selectChange = 0;
|
||||
select.die("change");
|
||||
select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
|
||||
select.trigger("change");
|
||||
equal( selectChange, 0, "Die on click works." );
|
||||
|
||||
selectChange = 0;
|
||||
select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
|
||||
select.trigger("change");
|
||||
equal( selectChange, 0, "Die on keyup works." );
|
||||
|
||||
// die specific checkbox
|
||||
checkbox.die("change", checkboxFunction);
|
||||
checkbox.trigger("change");
|
||||
equal( checkboxChange, 1, "Die on checkbox." );
|
||||
});
|
||||
|
||||
test("live with submit", function() {
|
||||
expect(7);
|
||||
|
||||
var count1 = 0, count2 = 0;
|
||||
|
||||
jQuery("#testForm").live("submit", function(ev) {
|
||||
count1++;
|
||||
ev.preventDefault();
|
||||
});
|
||||
|
||||
jQuery("body").live("submit", function(ev) {
|
||||
count2++;
|
||||
ev.preventDefault();
|
||||
});
|
||||
|
||||
jQuery("#testForm input[name=sub1]").submit();
|
||||
equal( count1, 1, "Verify form submit." );
|
||||
equal( count2, 1, "Verify body submit." );
|
||||
|
||||
jQuery("#testForm input[name=sub1]").live("click", function(ev) {
|
||||
ok( true, "cancelling submit still calls click handler" );
|
||||
});
|
||||
|
||||
jQuery("#testForm input[name=sub1]")[0].click();
|
||||
equal( count1, 2, "Verify form submit." );
|
||||
equal( count2, 2, "Verify body submit." );
|
||||
|
||||
jQuery("#testForm button[name=sub4]")[0].click();
|
||||
equal( count1, 3, "Verify form submit." );
|
||||
equal( count2, 3, "Verify body submit." );
|
||||
|
||||
jQuery("#testForm").die("submit");
|
||||
jQuery("#testForm input[name=sub1]").die("click");
|
||||
jQuery("body").die("submit");
|
||||
});
|
||||
|
||||
test("live with special events", function() {
|
||||
expect(13);
|
||||
|
||||
jQuery.event.special["foo"] = {
|
||||
setup: function( data, namespaces, handler ) {
|
||||
ok( true, "Setup run." );
|
||||
},
|
||||
teardown: function( namespaces ) {
|
||||
ok( true, "Teardown run." );
|
||||
},
|
||||
add: function( handleObj ) {
|
||||
ok( true, "Add run." );
|
||||
},
|
||||
remove: function( handleObj ) {
|
||||
ok( true, "Remove run." );
|
||||
},
|
||||
_default: function( event, arg ) {
|
||||
ok( event.type === "foo" && arg == 42, "Default run with correct args." );
|
||||
}
|
||||
};
|
||||
|
||||
// Run: setup, add
|
||||
jQuery("#liveSpan1").live("foo.a", function(e){
|
||||
ok( true, "Handler 1 run." );
|
||||
});
|
||||
|
||||
// Run: add
|
||||
jQuery("#liveSpan1").live("foo.b", function(e){
|
||||
ok( true, "Handler 2 run." );
|
||||
});
|
||||
|
||||
// Run: Handler 1, Handler 2, Default
|
||||
jQuery("#liveSpan1").trigger("foo", 42);
|
||||
|
||||
// Run: Handler 1, Default
|
||||
jQuery("#liveSpan1").trigger("foo.a", 42);
|
||||
|
||||
// Run: remove
|
||||
jQuery("#liveSpan1").die("foo.a");
|
||||
|
||||
// Run: Handler 2, Default
|
||||
jQuery("#liveSpan1").trigger("foo", 42);
|
||||
|
||||
// Run: remove, teardown
|
||||
jQuery("#liveSpan1").die("foo");
|
||||
|
||||
delete jQuery.event.special["foo"];
|
||||
});
|
||||
|
||||
test(".delegate()/.undelegate()", function() {
|
||||
expect(65);
|
||||
|
||||
@@ -2436,7 +1883,7 @@ test("delegate with change", function(){
|
||||
equal( textChange, 1, "Change on text input." );
|
||||
|
||||
text.val(oldTextVal);
|
||||
jQuery("#body").die("change");
|
||||
jQuery("#body").undelegate("#name", "change");
|
||||
|
||||
// test blur/focus on password
|
||||
var password = jQuery("#name"), passwordChange = 0, oldPasswordVal = password.val();
|
||||
|
||||
Reference in New Issue
Block a user