John, I have created and tested a patch.

Please have a look when you have a second. It does not break anything, the
name could be obviously changed if you want (  something like
updateCollection or whatever )

It stays into manipulation file

jQuery.fn.extend({

    // updates precedent search removing nodes not in context anymore
    garbage:(function(splice){
        return function() {
            var length = this.length,
                remove = []
            ;
            while( length ){
                if( !jQuery.contains( this.context, this[--length] ) ) {
                    remove.push( splice.call( this, length, 1 ) );
                }
            };
            remove.each = this.each;
            this.remove.call(remove, false, false);
            return this;
        }
    })( Array.prototype.splice ),

    text: function( text ) {
        ....

The only thing to avoid to mess up stuff is that it needs contains exposures
from selector file

// EXPOSE
jQuery.find = Sizzle;
jQuery.expr = Sizzle.selectors;
jQuery.expr[":"] = jQuery.expr.filters;
jQuery.contains = contains;

Please, let me know what you think.

Cheers

On Tue, Aug 18, 2009 at 4:31 PM, Andrea Giammarchi <
andrea.giammar...@gmail.com> wrote:

> Sorry, maybe this one will be better:
>
> garbage:(function(splice){
>     return function(){
>         var length = this.length;
>         while(length){
>             if(!contains(this.context, this[--length]))
>                 jQuery.remove.call(splice.call(this, length, 1));
>         };
>         return this;
>     };
> })(Array.prototype.splice),
>
> Regards
>
>
> On Tue, Aug 18, 2009 at 4:21 PM, Andrea Giammarchi <
> andrea.giammar...@gmail.com> wrote:
>
>> What a bout a garbage collector prototype method? Is there any plugin like
>> this?
>>
>> garbage:(function(splice){
>>     return function(){
>>         var length = this.length;
>>         while(length){
>>             if(!contains(this.context, this[--length]))
>>                 splice.call(this, length, 1);
>>         };
>>         return this;
>>     };
>> })(Array.prototype.splice),
>>
>> The problem is that to use the jQuery contains function it requires to be
>> inside the library since if I am not wrong contains is not exposed.
>>
>> What do you think?
>>
>>
>> On Tue, Aug 18, 2009 at 4:00 PM, John Resig <jere...@gmail.com> wrote:
>>
>>>
>>> Not really, right? You can still modify and re-place nodes that have
>>>> been removed from the dom, but not on nodes that have been destroyed.
>>>>
>>>> <div id="bar"><p>hi</p><p>there</p></div>
>>>>
>>>> var ps = $("#bar p").remove();
>>>> $("#bar").html("<p>hmm</p>");
>>>> ps.appendTo("#bar")
>>>>
>>>> or some such.
>>>>
>>>
>>> Removed from the DOM via an innerHTML or removed from the DOM via a
>>> removeChild - the result is the same either way. A reference to the DOM
>>> element should be maintained so that further operations can be performed.
>>>
>>> --John
>>>
>>>
>>> >>>
>>>
>>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-dev@googlegroups.com
To unsubscribe from this group, send email to 
jquery-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Attachment: garbage.patch
Description: Binary data

Reply via email to