我使用SWIPE来显示div幻灯片。
SWIPE标准设置:
<div id='slider' class='swipe'>
<div class='swipe-wrap'>
<div></div>
<div></div>
<div></div>
</div>
</div>
但我的代码有一个不幸的添加,导致SWIPE无法工作。。。
<div id='slider' class='swipe'>
<div class='swipe-wrap'>
<script></script>
<style></style>
<div></div>
<div></div>
<div></div>
</div>
</div>
脚本和样式标签导致它无法工作。。。。
为什么有一个脚本和样式标签你一定在想。。。
我有一个脚本,张贴数据我的页面
<script src="js.php?id=22235"></script>
这会输出类似的东西
<style type="text/css"></style>
<div id='Gallery'>
<div class="Details">
<img src="555.jpg">
<div class="Price">$5</div>
</div>
<div class="Details">
<img src="111.jpg">
<div class="Price">$1</div>
</div>
</div>
所以在浏览器中打开它之前,我的代码实际上是这样的
<div id='slider' class='swipe'>
<div class='swipe-wrap'>
<script src="js.php?id=22235"></script>
</div>
</div>
那么现在我尝试了什么。。。好吧,我使用jquery在内容到位后删除标签,但这似乎太晚了。。。和滑动已经吓坏了我
$('.swipe-wrap style').remove();
啊,除此之外,我开始创建另一个页面来转储内容,然后我打算只在div部分使用一些php解析,我开始认为必须有更好的方法。。。所以我在这里
谢谢,JT
问题是,一旦加载脚本(如果有一些顶级代码),或者在加载后第一次调用脚本时,脚本就会被执行。只有在脚本执行之后,才能删除样式标记。
如果您有权访问脚本,您可以对其进行更改,使其不再添加样式元素。如果你没有访问权限(我假设是这样),你可以按照以下方式操作:
将事件侦听器添加到DOM更改
首先使用jQuery为DOM修改事件添加一个eventlistener。这样的事件将被DOMNodeInserted。您将eventlistener附加到一个肯定存在的元素上。它可能看起来像这样:
$(function() {
$('.swipe-wrap').on('DOMNodeInserted', 'style', function(event) {
var target = $(event.currentTarget);
target.remove();
$('.swipe-wrap script').remove();
loadSWIPE();
});
});
这样,一旦将每个样式元素添加到DOM中,就可以删除它。
确保SWIPE在清理后加载
在移除样式元素时调用的函数中加载SWIPE脚本(如上所述)。在函数中,您可以检查.swipe-wrap
元素下面有多少样式元素,只有在没有样式元素的情况下,才会加载SWIPE脚本。
function loadSWIPE() {
var length = $('#mySwipe style').length;
if (length == 0) {
var url = "swipe.js";
$.getScript(url, function() {
var elem = document.getElementById('mySwipe');
window.mySwipe = Swipe(elem, {});
});
}
}
编辑
添加了删除PHP脚本的脚本标记。