1

我已经在一个 HTML 页面上成功实现了jQuery BBQ,它允许我在单击某个类的触发链接时将 HTML 注入 div。我想做的是执行一些包含在注入页面中的 jquery,就好像 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);
    })
});
4

1 回答 1

1

我设法找到了一个解决方案 - 基本上你可以在原始脚本中的 AJAX 调用下面插入任何你想被 AJAX 注入触发的东西,如下所示: -

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


            });
于 2011-03-10T16:30:29.480 回答