 
     initialize: () ->
         do @listen
+        @builder._jquery_tracker = el:@builder
         # override query
         old_query = @builder.query
         @builder.query = (type, tag, key) ->


    ontext: (el, text) ->
        delay.call el, ->
            el._jquery.text(text)

    onraw: (el, html) ->
        delay.call el, =>
            @animation.push ->
                el._jquery?.html(html)

    onshow: (el) ->
        delay.call el, ->
            el._jquery.show()

    onhide: (el) ->
        delay.call el, ->
            el._jquery.hide()

    onattr: (el, key, value) ->
        delay.call el, ->
            if value is undefined
                el._jquery.removeAttr(key)
            else
                el._jquery.attr(key, value)

    onreplace: (el, tag) ->
        delay.call el, =>
            @animation.push =>
                return if removed el
                _jquery = tag._jquery ? tag
                return unless _jquery?.length > 0
                el._jquery.replaceWith(_jquery)
                # replaceWith isnt inplace
                el._jquery = _jquery
                if el is @builder
                    el.jquery = _jquery

    onremove: (el) ->
        delay.call el.parent, ->
            el._jquery?.remove()
            delete el._jquery

    onend: () ->
#         @builder._jquery.data('dt-jquery', @template.xml)

    return if removed this
    # only when tag is ready
    if @_jquery?
        job.call(this)
    else
        @_jquery_delay ?= []
        @_jquery_delay.push(job)
