jQuery .load(), но исключить теги скрипта

Я использую следующий JQuery для загрузки в 5 страниц на текущей странице

$('.main').load('main.cfm');
$('.bu1').load('bu1.cfm');
$('.bu2').load('bu2.cfm');
$('.bu3').load('bu3.cfm');
$('.bu4').load('bu4.cfm');

Но каждый .cfm имеет следующее script теги в них

            <script src="js/jquery.speedometer.js"></script> 
            <script src="js/jquery.jqcanvas-modified.js"></script> 
            <script src="js//excanvas-modified.js"></script> 
            <script>
            $(function(){
                $('#MDTQ').speedometer({
                    backgroundImage: "url(speedo/background-r.png)",
                    maximum: 15,
                    scale: 15,
                    suffix: ''
                });

                $('.changeSpeedometer').click(function(){
                    $('#MDTQ').speedometer({ percentage: $('.speedometer').val() || 0 });
                });
            });
            </script>

Есть ли способ удалить нижеприведенное из страниц ниже, пока загружается?

$('.bu1').load('bu1.cfm');
$('.bu2').load('bu2.cfm');
$('.bu3').load('bu3.cfm');
$('.bu4').load('bu4.cfm');

Спасибо

3 ответа

Поскольку load - это ярлык для $.get с удобством автоматической вставки контента для вас, вы можете использовать его и отфильтровать теги скрипта перед вставкой контента самостоятельно:

$.get('bu1.cfm', function(html) {
     var markup = $($.trim(html));
     markup.find('script').remove();

     $('.bu1').html(markup);
});

РЕДАКТИРОВАТЬ:

фильтровать по src:

$.get('bu1.cfm', function(html) {
     var markup = $($.trim(html));
     $('script[src]', markup).remove();
     $('.bu1').html(markup);
});

Использование $.get с относительно новым $.parseHTML метод.

$.get('bu1.cfm', function(html) {
    var markup = $.parseHTML(html);
    $('#bu1').html(markup);
});

по умолчанию $.parseHTML удалит все теги скрипта в разметке.

Если вместо этого вы хотите удалить только те сценарии, которые имеют атрибут src, используйте второй атрибут, а затем отфильтруйте результаты.

$.get('bu1.cfm', function(html) {
    var markup = $($.parseHTML(html,true));
    var scripts = markup.find("script").addBack().filter("script");
    scripts.filter("[src]").remove();
    $('#bu1').html(markup).append(scripts);

});

Не уверен, что использование регулярного выражения может быть полезным: Примечание: я использовал div с определенным идентификатором вместо класса для тестирования. Кроме того, мой тестовый файл был полным HTML-документом. Я раньше не работал с cfm, но, возможно, концепция та же самая.

$(function() {
    $.ajax({type: "GET",
        url: "yourfile.cfm", 
        dataType: "html",    
        error:function() { alert("error") },
        success:  function(data) {
            $("#main").html(data.replace(/<script[^>]*>[\w\W]*?<\/script>/g,""));
        }});
});
Другие вопросы по тегам