2013-07-27 65 views
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(); 

ahh除此之外,我開始創建另一個頁面來轉儲內容然後我將使用一些PHP解析div部分,我必須認爲必須有一個更好的方式...所以即時通訊這裏

感謝, JT

+1

你必須先用jQuery做些事情,然後通過getScript動態加載腳本滑動腳本,它可以解決問題 – Vineet1982

+0

在你的滑動初始化語句之前放置你的jquery語句,你應該很好。如果沒有,將它們都包裝在一個'window.onload'包裝中,以確保你的php腳本在你初始化之前已經返回了它的值。 –

回答

1

的問題是,一旦它被加載的腳本執行(如果有一些頂級代碼),或當它被稱爲第一次加載後。只有腳本執行後,您才能刪除樣式標籤。

如果您有權訪問該腳本,則可以將其更改爲不再添加樣式元素。如果您沒有訪問(我假設),你可以按照這種方式:

添加事件偵聽器,DOM改變

首先使用jQuery添加一個事件監聽的DOM修改事件。這樣的事件將是DOMNodeInserted。你將eventlistener附加到肯定存在的元素上。它可能看起來像這樣:

$(function() { 
    $('.swipe-wrap').on('DOMNodeInserted', 'style', function(event) { 
     var target = $(event.currentTarget); 
     target.remove(); 
     $('.swipe-wrap script').remove(); 
     loadSWIPE(); 
    }); 
}); 

這樣你刪除每個樣式元素,一旦它被添加到DOM。

確保刷取此清理

負載在一個函數的刷取腳本當樣式元素被刪除時調用(如上)之後被加載。在函數內部,您檢查.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腳本的腳本標籤。

+0

就像你說的那樣工作......一個小問題!我還需要刪除腳本標記。你會如何做到這一點?刪除樣式標籤時刪除它? –

+0

我會這麼說。我會將其編輯爲答案。 –

+0

謝謝我的朋友! ahhh life saver :) –