Yes, please.

-Stephen

John Resig wrote:
> I really prefer doing a 'return false' instead of throwing exceptions.
> It just feels like an incredibly messy way to handle things - plus it
> prevents you from writing good one-liners, which makes me sad.
>
> Plus the change is trivial, too:
>
>         each: function( obj, fn, args ) {
>                 if ( obj.length == undefined )
>                         for ( var i in obj )
>                                 if ( fn.apply( obj[i], args || [i,
> obj[i]] ) === false ) return obj;
>                 else
>                         for ( var i = 0; i < obj.length; i++ )
>                                 if ( fn.apply( obj[i], args || [i,
> obj[i]] ) === false ) return obj;
>                 return obj;
>         },
>
> Should I add it in?
>
> --John
>
> On 10/12/06, Blair Mitchelmore <[EMAIL PROTECTED]> wrote:
>   
>> It seems like it would be really easy to implement a breaking mechanism
>> for jQuery .each() function. We could use the same technique prototype
>> does by creating a unique object and letting users throw that to break.
>> We could create a 'break' property inside jQuery that .each() could
>> catch to break the loop.
>>
>> Exception based (ala prototype) implementation:
>>
>> Example:
>> $("p").each(function() {
>>     if ($(this).is(".unnecessary.beyond.here")) throw $['break'];
>>
>> $(this).addClass('this').addClass('was').addClass('totally').addClass('required');
>> };
>>
>> Code:
>> jQuery['break'] = new Object();
>> jQuery.extend({
>>     each: function( obj, fn, args ) {
>>         if ( obj.length == undefined )
>>             for ( var i in obj )
>>                 try {
>>                     fn.apply( obj[i], args || [i, obj[i]] );
>>                 } catch (e) {
>>                     if (e == jQuery['break']) break;
>>                     throw e;
>>                 }
>>         else
>>             for ( var i = 0; i < obj.length; i++ )
>>                 try {
>>                     fn.apply( obj[i], args || [i, obj[i]] );
>>                 } catch(e) {
>>                     if (e == jQuery['break']) break;
>>                     throw e;
>>                 }
>>         return obj;
>>     },
>> });
>>
>> Return Value based implementation:
>>
>> Example:
>> $("p").each(function() {
>>     if ($(this).is(".unnecessary.beyond.here")) return $['break'];
>>
>> $(this).addClass('this').addClass('was').addClass('totally').addClass('required');
>> };
>>
>> Code:
>> jQuery['break'] = new Object();
>> jQuery.extend({
>>     each: function( obj, fn, args ) {
>>         if ( obj.length == undefined )
>>             for ( var i in obj )
>>                 if ( fn.apply( obj[i], args || [i, obj[i]] ) ==
>> jQuery['break']) break;
>>         else
>>             for ( var i = 0; i < obj.length; i++ )
>>                 if ( fn.apply( obj[i], args || [i, obj[i]] ) ==
>> jQuery['break']) break;
>>         return obj;
>>     },
>> });
>>
>> The code for this feature is marginal and it is one of the few things
>> that I miss from my prototype days. This code is untested and might not
>> work the way I expect it to, but you get the drift.
>>
>> -blair
>>
>> NB It may be better to use something other than 'break' as the variable
>> name as it's a reserved word and you'd have to use the square bracket
>> notation any time it is used.
>>     
>
> _______________________________________________
> jQuery mailing list
> [email protected]
> http://jquery.com/discuss/
>   

_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/

Reply via email to