2012-09-06 61 views
0

我在頁面上使用jQuery的load函數來獲取網頁的內容並打印出來。這裏是我的代碼:jquery加載函數忽略動態變化

$('#container').load('<?php print $_GET['load']; ?>', function(data) { 

    window.print(); 
}); 

其中變量'load'是url。

問題是,正在加載的頁面有一個javascript設計的過濾器附加它,意思是在該頁面上用戶可以點擊按鈕來刪除或顯示某些信息,例如, { display: none }

但是,用戶隱藏的項目DO顯示在這個新頁面中。我明白爲什麼會這樣,JavaScript不會更改頁面的基本HTML,但它仍然存在,但我想找到解決此問題的方法。

回答

0

因此,當#container用新內容刷新時,所有舊的DOM元素(HTML的內部版本)被銷燬並被替換 - 因此它失去了display:none屬性。解決此

一種方法是做這樣的事情:

<div id='container'> 
    <div class="a">Stuff 1</div> 
    <div class="b">Stuff 2</div> 
    <div class="c">Stuff 3</div> 
</div> 

<input type="button" class="hide_something" data-hide-class="a" value="Hide A"> 
<input type="button" class="hide_something" data-hide-class="b" value="Hide B"> 
<input type="button" class="hide_something" data-hide-class="c" value="Hide C"> 

$('.hide_something').on("click", function() { 
    $('#container').addClass('hide_' + $(this).data("hide-class")); 
}​); 


.hide_a .a, 
.hide_b .b, 
.hide_c .c { display: none; } 

這裏有一個小提琴:http://jsfiddle.net/2Qkjn/

因此,基本上,當用戶點擊一個按鈕,它增加了一個類外CSS引起的容器隱藏內部內容..替換內部內容不會改變CSS規則..

另一種方法是將狀態存儲在JS中,然後在DOM重新加載時刷新它們。

+0

我不認爲這回答了我的問題。我通過ajax調用(jquery load)獲得#container的內容,所以我沒有任何可用的過濾器信息。 – user1015214

+0

我明白你的問題是你正在從AJAX加載數據並重新填充已經隱藏了用戶數據的容器。 – Stephen