2

我使用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();

啊除此之外,我开始创建另一个页面来转储内容,然后我将使用一些 php 解析只是 div 部分,我认为必须有更好的方法......所以我在这里

谢谢,JT

4

1 回答 1

1

问题是脚本在加载后执行(如果有一些顶级代码)或在加载后第一次调用时执行。只有在脚本执行后,您才能删除样式标签。

如果您有权访问该脚本,则可以对其进行更改,使其不再添加样式元素。如果您没有访问权限(我假设),您可以按照以下方式进行操作:

将事件侦听器添加到 DOM 更改

首先使用 jQuery 为 DOM 修改事件添加事件监听器。这样的事件将是 DOMNodeInserted。您将事件侦听器附加到肯定存在的元素上。它可能看起来像这样:

$(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 脚本的脚本标记。

于 2013-07-27T18:42:00.610 回答