2011-03-10 20 views
1

我已经在HTML页面上成功实现了jQuery BBQ,允许我在点击某个类的触发器链接时将HTML注入到div中。我想要做的是执行一些包含在注入页面中的jquery,就像document.ready已经被注入触发一样。jQuery BBQ - 在注入Javascript中执行事件,就像使用document.ready

我正在使用jQuery 1.4.4,所以宁愿避免LiveQuery。

这里是我的尝试至今: -

// Global Join Functions 

$(window).bind('hashchange', function() { 
    // ================================================================== 
    // Progressively enhance Radio Buttons and Checkboxes 
    // ================================================================== 
    $(".enhancedradiocheck").buttonset(); 
    // ================================================================== 
    // Ajaxify links and load them in a div whilst hashing state 
    // ================================================================== 
    // Keep a mapping of url-to-container for caching purposes. 
    var cache = { 
     // If url is '' (no fragment), display this div's content. 
     '': $('.form-default') 
    }; 
    // Bind an event to window.onhashchange that, when the history state changes, 
    // gets the url from the hash and displays either our cached content or fetches 
    // new content to be displayed. 
    $(window).bind('hashchange', function (e) { 
     // Get the hash (fragment) as a string, with any leading # removed. Note that 
     // in jQuery 1.4, you should use e.fragment instead of $.param.fragment(). 
     var url = $.param.fragment(); 
     // Remove .form-current class from any previously "current" link(s). 
     $('a.form-current').removeClass('form-current'); 
     // Hide any visible ajax content. 
     $('.ajaxified').children(':visible').hide(); 
     if (cache[url]) { 
      // Since the element is already in the cache, it doesn't need to be 
      // created, so instead of creating it again, let's just show it! 
      cache[url].show(); 
     } else { 
      // Show "loading" content while AJAX content loads. 
      $('.form-loading').show(); 
      // Create container for this url's content and store a reference to it in 
      // the cache. 
      cache[url] = $('<div class="form-item"/>') 
      // Append the content container to the parent container. 
      .appendTo('.ajaxified') 
      // Load external content via AJAX. Note that in order to keep this 
      // example streamlined, only the content in .infobox is shown. You'll 
      // want to change this based on your needs. 
      .load(url, function() { 
       // Content loaded, hide "loading" content. 
       $('.form-loading').hide(); 
      }); 
     } 
    }) 
    // Since the event is only triggered when the hash changes, we need to trigger 
    // the event now, to handle the hash the page may have loaded with. 
    $(window).trigger('hashchange'); 
    //Add the hash to any link with the class ajaxlink so it degrades gracefully 
    $("a.ajaxlink").each(function() { 
     el = $(this); 
     ajaxhref = "#" + el.attr("href"); 
     el.attr("href", ajaxhref); 
    }) 
}); 

回答

1

我设法找到一个解决方案 - 从本质上讲,你可以插入任何你希望由AJAX注入的原始脚本AJAX调用下面如下触发: -

.load(url, function() { 
       // Content loaded, hide "loading" content. 
       $('.form-loading').hide(); 
       $(".enhancedradiocheck").buttonset(); 


      }); 
相关问题