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,""));
}});
});