比如有一個(gè)slide的jquery插件,頁(yè)面打開就對(duì)dom進(jìn)行了綁定。
<div class="expert">
??? <div class="expert-list">
??????? <ul>
??????????? <li class="expert-item">
??????????????? <a href="#">
??????????????????? <img src="./imgs/expert1.jpg" />
??????????????? </a>
??????????? </li>
??????????? <li class="expert-item">
??????????????? <a href="#">
??????????????????? <img src="./imgs/expert2.jpg" />
??????????????? </a>
??????????? </li>
??????? </ul>
??????? <a class="prev" href="javascript:void(0)"></a>
??????? <a class="next" href="javascript:void(0)"></a>
??? </div>
</div>
<script type="text/javascript">
??? $(".expert-list").slide({mainCell: "ul", autoPage: true, effect: "left", autoPlay: true});
</script>
現(xiàn)在需求是當(dāng)窗口大小發(fā)生改變時(shí),這個(gè)slide也會(huì)發(fā)生相應(yīng)變化。
單純的用jquery去控制expert-list、expert-item和img的寬、高效果并不怎么好。
想法是,解除expert-list上的slide插件綁定,然后在窗口大小改變的事件處理函數(shù)中再重新綁定,結(jié)果并沒(méi)有找到解除綁定的方法。
笨辦法是,先clone()一份,然后在把原先的dom刪除再添加,再重新綁定。
<script type="text/javascript">
??? var expert = $(".expert").clone();
??? $(".expert-list").slide({mainCell: "ul", autoPage: true, effect: "left", autoPlay: true});
?
??? $(window).resize(function () {
??????? $(".expert").empty();
?
??????? //這里只需添加html結(jié)構(gòu),clone()好像會(huì)把行內(nèi)樣式也拷貝了。
??????? $(".expert").append(expert.html());
??????? $(".expert-list").slide({mainCell: "ul", autoPage: true, effect: "left", autoPlay: true});
??? });
</script>
缺點(diǎn):此方法的效率并不怎么高。