});
test(".live()/.die()", function() {
- expect(58);
+ expect(61);
var submit = 0, div = 0, livea = 0, liveb = 0;
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++; });
+
+ equals( livee, 0, "No clicks, deep selector." );
+
+ livee = 0;
+ jQuery("#nothiddendivchild").trigger("click");
+ equals( livee, 2, "Click, deep selector." );
+
+ livee = 0;
+ jQuery("#nothiddendivchild").trigger("mouseover");
+ equals( livee, 1, "Mouseover, deep selector." );
+
+ jQuery("#nothiddendiv div").die("mouseover");
+
+ livee = 0;
+ jQuery("#nothiddendivchild").trigger("click");
+ equals( livee, 2, "Click, deep selector." );
+
+ livee = 0;
+ jQuery("#nothiddendivchild").trigger("mouseover");
+ equals( livee, 0, "Mouseover, deep selector." );
+
+ jQuery("#nothiddendiv div").die("click", clickB);
+
+ livee = 0;
+ jQuery("#nothiddendivchild").trigger("click");
+ equals( livee, 1, "Click, deep selector." );
+
+ jQuery("#nothiddendiv div").die("click");
});
-test("live with submit", function() {
- var count = 0;
+test("live with change", function(){
+ var selectChange = 0, checkboxChange = 0;
- jQuery("#testForm").live("submit", function() {
- count++;
- return false;
+ 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");
+ equals( selectChange, 1, "Change on click." );
+
+ // test keys on select
+ selectChange = 0;
+ select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
+ select.trigger("change");
+ equals( selectChange, 1, "Change on keyup." );
+
+ // test click on checkbox
+ checkbox.trigger("change");
+ equals( checkboxChange, 1, "Change on checkbox." );
+
+ // test before activate on radio
+
+ // test blur/focus on textarea
+ var textarea = jQuery("#area1"), textareaChange = 0, oldVal = textarea.val();
+ textarea.live("change", function() {
+ textareaChange++;
});
+
+ textarea.val(oldVal + "foo");
+ textarea.trigger("change");
+ equals( textareaChange, 1, "Change on textarea." );
+
+ textarea.val(oldVal);
+ textarea.die("change");
- jQuery("#testForm input[name=sub1]")[0].click();
- jQuery("#testForm input[name=T1]").trigger({type: "keypress", keyCode: 13});
+ // test blur/focus on text
+ var text = jQuery("#name"), textChange = 0, oldTextVal = text.val();
+ text.live("change", function() {
+ textChange++;
+ });
+
+ text.val(oldVal+"foo");
+ text.trigger("change");
+ equals( 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");
+ equals( passwordChange, 1, "Change on password input." );
+
+ password.val(oldPasswordVal);
+ password.die("change");
- equals(2, count);
+ // make sure die works
+
+ // die all changes
+ selectChange = 0;
+ select.die("change");
+ select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
+ select.trigger("change");
+ equals( selectChange, 0, "Die on click works." );
+
+ selectChange = 0;
+ select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
+ select.trigger("change");
+ equals( selectChange, 0, "Die on keyup works." );
+
+ // die specific checkbox
+ checkbox.die("change", checkboxFunction);
+ checkbox.trigger("change");
+ equals( checkboxChange, 1, "Die on checkbox." );
+});
+
+test("live with submit", function() {
+ var count1 = 0, count2 = 0;
+
+ jQuery("#testForm").live("submit", function(ev) {
+ count1++;
+ ev.preventDefault();
+ });
+
+ jQuery("body").live("submit", function(ev) {
+ count2++;
+ ev.preventDefault();
+ });
+
+ if ( jQuery.support.submitBubbles ) {
+ jQuery("#testForm input[name=sub1]")[0].click();
+ equals(count1,1 );
+ equals(count2,1);
+ } else {
+ jQuery("#testForm input[name=sub1]")[0].click();
+ jQuery("#testForm input[name=T1]").trigger({type: "keypress", keyCode: 13});
+ equals(count1,2);
+ equals(count2,2);
+ }
jQuery("#testForm").die("submit");
+ jQuery("body").die("submit");
});
test("live with focus/blur", function(){