0

我使用$('.class').load('url #id'),但它只得到 html 代码,或者我做错了什么)

如何从页面获取 JS?

我使用此代码的网站:http: //vbtes.p.ht/Amira/# !contacts (没有 js,不要使用标签)。

有 JS:http: //vbtes.p.ht/Amira/# !contacts

var sm = 1;
var oldactivemenu = 0;
var selectedmenu = '';
var elemthis;

function ocmenu(heshatr, thiselem) {
    elemthis = thiselem;
    if (sm == 1) {
        location.hash = '!' + heshatr;
    }
}
$(function () {
    $(window).hashchange(function () {
        // Alerts every time the hash changes!
        var linkmenuurl = $(location).attr('href').split("#!")[1];
        if (location.hash == '') {
            linkmenuurl = '';
        }
        if (sm == 1 && selectedmenu !== linkmenuurl) {
            $('.active').removeClass('active');
            $(elemthis).addClass('active');
            if ($(elemthis).parent('.main-menu__item_level_1')) {
                $(elemthis).parent().parent().parent().children('.main-menu__item-link').addClass('active');
            }

            selectedmenu = linkmenuurl;
            sm = 0;
            $('.new').load(linkmenuurl + ' #lay_body_get', function () {
                $('.new').show();
                $('.lb2').css({
                    top: $('.lb1').height() * -1 - 60
                });
                $('.new').animate({
                    left: 0
                }, 500);
                $('.old').animate({
                    left: -1450
                }, 500, function () {
                    $('.old').addClass('ob1');
                    $('.new').addClass('nw1');
                    $('.ob1').removeClass('old').addClass('new').css({
                        left: 1450
                    }).hide(100);
                    $('.nw1').removeClass('new').addClass('old').animate({
                        top: 0
                    }, 100, function () {
                        sm = 1;
                    });
                    $('.ob1').removeClass('ob1');
                    $('.nw1').removeClass('nw1');

                });
            });
        }
    })

    // Trigger the event (useful on page load).
    $(window).hashchange();
});
4

2 回答 2

3

当您使用选择器调用 .load 时,jQuery 将从结果中删除脚本。

jQuery 文档

脚本执行

当使用没有后缀选择器表达式的 URL 调用 .load() 时,内容会在脚本被删除之前传递给 .html()。这会在脚本块被丢弃之前执行它们。但是,如果调用 .load() 时将选择器表达式附加到 URL,则脚本会在 DOM 更新之前被剥离,因此不会执行。两种情况的示例如下所示:

于 2013-08-13T23:04:32.933 回答
0

$.getScript(url)按照此处记录的方式使用。

如果这些是<script>加载的 HTML 中的标签,请使用 jQuery 对其进行迭代,并使用上面的函数加载它们。

加法:您可以执行以下操作:

$.ajax(myPageURL, { complete: function (data) { 
    $(data.responseText).filter('script').each(function () { 
        $.getScript(this.src);

        // OR

        $('head').append($(this).html());
    }); 
}});

这是该jQuery.load()问题的解决方法。它会再次加载整个页面,但会去除<html>, <body>, <head>(等)元素 - 从而允许您过滤页面标题中的脚本。请注意,这将导致页面再次加载。

顺便说一句,向您的页面添加<script>标签而不是使用$.getScript()至少可以在 Chrome 中调试脚本。

于 2013-08-13T23:05:56.197 回答