   constructor: (element, identifier, scopeId) ->
     scope = PwnFx.resolveScope scopeId, element
     method = element.getAttribute('data-pwnfx-move-method') || 'append'
-    target = document.querySelector "[data-pwnfx-move-target=\"#{identifier}\"]"
+    target = document.querySelector "[data-pwnfx-move-target~=\"#{identifier}\"]"
 
     switch method
       when 'append'

#       beforebegin, afterbegin, beforeend, afterend; defaults to beforeend
#   data-pwnfx-render-randomize: regexp pattern whose matches will be replaced
#       with a random string; useful for generating unique IDs
#   data-pwnfx-render-target: set on the element(s) receiving the rendered HTML;
#       set to the identifier in data-pwnfx-render
#   data-pwnfx-render-source: set to the identifier in data-pwnfx-render, on the
#       <script> tag containing the source HTML
class PwnFxRender
  constructor: (element, identifier, scopeId) ->
    sourceSelector = "script[data-pwnfx-render-source=\"#{identifier}\"]"
    targetSelector = "[data-pwnfx-render-target=\"#{identifier}\"]"
    insertionPoint = element.getAttribute('data-pwnfx-render-where') ||
                     'beforeend'
    randomizedPatten = element.getAttribute('data-pwnfx-render-randomize')

#   data-pwnfx-delayed-method: the HTTP method of AJAX request (default: POST)
#   data-pwnfx-delayed-ms: the delay between the page load and the issuing of
#                          the AJAX request (default: 1000ms)
#   data-pwnfx-delayed-target: a space-separated list of identifiers, one of which
#       should match the value of data-pwnfx-delayed; set on the element
#       populated with the AJAX response
class PwnFxDelayed
  constructor: (element, identifier, scopeId) ->
    targetSelector = "[data-pwnfx-delayed-target~=\"#{identifier}\"]"
    xhrUrl = element.getAttribute('data-pwnfx-delayed-url')
    xhrMethod = element.getAttribute('data-pwnfx-delayed-method') || 'POST'
    xhrForm = PwnFx.parentForm element
