Skip to content

Commit 84d53ba

Browse files
author
Pinhook
committed
fixing a bug with sub and getting default and pause events to work well enough for menuable
1 parent e2f4ee9 commit 84d53ba

File tree

5 files changed

+79
-6
lines changed

5 files changed

+79
-6
lines changed

event/default/default.js

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,12 @@ $event.special["default"] = {
110110
a.handler.call(a.element, event, a.data);
111111
event.handled = event.handled === null ? oldHandle : true;
112112
}
113-
event._defaultActions = null; //set to null so everyone else on this element ignores it
113+
114+
event._defaultActions = null; //set to null so everyone else on this element ignores it
115+
116+
if(event._success){
117+
event._success();
118+
}
114119
}
115120
}
116121
}
@@ -145,7 +150,9 @@ $event.trigger = function defaultTriggerer( event, data, elem, bubbling){
145150
oldTrigger.call($.event, event, data, elem, bubbling);
146151
checkAndRunDefaults(event, elem);
147152

148-
}
153+
};
154+
155+
149156
/**
150157
* @add jQuery.fn
151158
*/
@@ -193,7 +200,30 @@ triggerDefaults = function(type, data){
193200
}
194201
return true;
195202
}
203+
204+
$.fn.
205+
/**
206+
* Triggers an event and calls success if the event is complete
207+
* @param {Object} type
208+
* @param {Object} data
209+
* @param {Object} success
210+
* @param {Object} prevented
211+
*/
212+
triggerAsync = function(type, data, success, prevented){
213+
if(typeof data == 'function'){
214+
success = data;
215+
data = undefined;
216+
}
196217

218+
if ( this[0] ) {
219+
var event = $.Event( type );
220+
//event._success= success;
221+
jQuery.event.trigger( {type: type, _success: success}, data, this[0] );
222+
} else{
223+
success.call(this);
224+
}
225+
return this;
226+
}
197227

198228

199229

event/default/default_pause_test.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ test("default and pause with live", function(){
4848
setTimeout(function(){
4949
start();
5050
same(order,['show','default'])
51+
$("#foo").die("show");
52+
$("#foo").die("default.show");
5153
},30)
5254
},50)
5355
});
@@ -57,4 +59,39 @@ test("default and pause with live", function(){
5759

5860
});
5961

62+
63+
test("triggerAsync", function(){
64+
$("#qunit-test-area").html("<div id='foo'>hello</div>")
65+
66+
var order = [];
67+
stop();
68+
69+
$("#foo").live("default.show", function(){
70+
order.push("default")
71+
});
72+
$("#foo").live("show", function(ev){
73+
order.push('show')
74+
ev.pause();
75+
setTimeout(function(){
76+
ev.resume();
77+
setTimeout(function(){
78+
start();
79+
same(order,['show','default','async'])
80+
},30)
81+
},50)
82+
});
83+
84+
85+
$("#foo").triggerAsync("show", function(){
86+
order.push("async")
87+
})
88+
});
89+
90+
test("triggerAsync with nothing", function(){
91+
$("#fool").triggerAsync("show", function(){
92+
ok(true)
93+
})
94+
});
95+
96+
6097
});

event/pause/pause.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ $.Event.prototype.resume = function(){
4242
if(!this.isPropagationStopped()){
4343
if(el.parentNode){
4444
// resume trigger like this so default doesn't get confused
45-
$.event.trigger( this, this.data, el.parentNode , true);
45+
$.event.trigger( this, [this], el.parentNode , true);
4646
} else if($.event.special['default']){
4747

4848
$.event.special['default'].checkAndRunDefaults(this,el)

lang/lang.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ steal.plugins('jquery').then(function( $ ) {
2727
current,
2828
ret,
2929
i,
30-
j,
30+
c = 0,
3131
type;
3232

3333
if(length == 0){
3434
return currents[0];
3535
}
36-
while(current = currents.shift()){
36+
while(current = currents[c++]){
3737
for (i =0; i < length - 1 && isContainer(current); i++ ) {
3838
current = getNext(current, parts[i], add);
3939
}

lang/lang_test.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ test("$.String.sub", function(){
1414

1515
});
1616

17+
test("$.String.sub double", function(){
18+
equals($.String.sub("{b} {d}",[{b: "c", d: "e"}]),"c e");
19+
})
20+
1721
test("String.underscore", function(){
1822
equals($.String.underscore("Foo.Bar.ZarDar"),"foo.bar.zar_dar")
1923
})
@@ -23,6 +27,8 @@ test("$.String.getObject", function(){
2327
var obj = $.String.getObject("foo", [{a: 1}, {foo: 'bar'}]);
2428

2529
equals(obj,'bar', 'got bar')
26-
})
30+
});
31+
32+
2733

2834
});

0 commit comments

Comments
 (0)