JS通過push方法動態(tài)添加swiper組件的slider

由于項目是從基于谷歌瀏覽器改版成基于IE瀏覽器,所以項目中基本上是以jQuery來控制DOM,其中遇到了使用數(shù)組的push和jQuery的html方法來動態(tài)生成頁面(主要是一個個運單),頁面中引用了swiper轧膘,再通過循環(huán)生成后臺數(shù)據(jù)所反的相對應(yīng)個數(shù)的slider,但是發(fā)現(xiàn)在頁面載入后,組件并沒有生效攒岛,后來終于通過一系列搜索找到了解決的方法,也是癡呆了TAT胞锰。

首先需要在頁面引入swiper的js文件和css文件
<link rel="stylesheet" href="../../lib/css/swiper-3.4.2.min.css"/>
<script type="text/javascript" src="../../lib/jquery-2.0.1.min.js"></script>
<script type="text/javascript" src="../../lib/swiper-3.4.2.min.js"></script>
在HTML中為動態(tài)生成的內(nèi)容準(zhǔn)備一個div容器

<section>標(biāo)簽中就是裝的動態(tài)生成的內(nèi)容灾锯。

<section class="scene-content">
</section>
接著在自己的js代碼中開始數(shù)組的push方法

這里是生成所有訂單的方法,其中涉及到swiper的push方法在相關(guān)圖片注釋處嗅榕。

var isCheck //標(biāo)記用戶是否點擊了安檢按鈕
function fullOrder(data) {// 填充內(nèi)容的方法
    isCheck = sessionStorage.getItem('isCheck')//點擊了安檢按鈕后會存入session
    if(isCheck == undefined) {
        for(var k = 0; k < data.length; k++) {
            if(data[k].status == 2) { //后臺數(shù)據(jù)2代表運單正在安檢
                isCheck = "true"
                break;
            } else {
                isCheck = 'false'
            }
        }
    } else {}
    var html = []; //定義一個存內(nèi)容的數(shù)組變量
    for(var i = 0; i < data.length; i++) {//循環(huán)后臺數(shù)據(jù)返回的單子個數(shù)
        //0說明運單在等待安檢 2說明正在安檢 3說明運單暫停中
        //五花八門的樣式真的是害死人八骋3炒稀!<嫘邸R魇拧!當(dāng)時寫這個寫的我都快哭了
        if(data[i].status == 0 && isCheck == "false" || data[i].status == 3 && isCheck == "false") {
            html.push('<div class="waybill waybill-wait">')
        } else if(data[i].status == 0 && isCheck == "true") {
            html.push('<div class="waybill waybill-gray">')
        } else if(data[i].status == 2 && isCheck == "true") {
            html.push('<div class="waybill waybill-proceed">')
        } else if(data[i].status == 3 && isCheck == "true") {
            html.push('<div class="waybill waybill-gray">')
        }
        html.push('<div class="way-head">')
        if((data[i].status == 0 && isCheck == "false") || (data[i].status == 3 && isCheck == "false")) {
            html.push('<i class="circle cir-blue"></i>')
        } else if(data[i].status == 0 && isCheck == "true") {
            html.push('<i class="circle cir-gray"></i>')
        } else if(data[i].status == 3 && isCheck == "true") {
            html.push('<i class="circle cir-gray"></i>')
        } else if(data[i].status == 2) {
            html.push('<i class="circle cir-orange"></i>')
        }
        html.push('<div class="one-tier">')
        html.push('<h4 class="way-tit black-tit">運單號 ' + data[i].orderId + '</h4>')
        html.push('<span class="label green">件數(shù): ' + data[i].num + '</span>')
        html.push('</div>')
        html.push('<p class="two-tier">')
        if(data[i].status == 0 || data[i].status == 3) {
            html.push('<span class="status wait-gray">等待安檢...</span>')
        } else if(data[i].status == 2) {
            html.push('<span class="status wait-gray">安檢進行中...</span>')
        }
        html.push('<span class="gray-tit creat-time">創(chuàng)建時間:')
        html.push('<i class="black time-font">' + compareNull(data[i].createTime, 2).substring(0, 11) + '</i>')
        html.push('</span>')
        html.push('</p>')
        html.push('</div>')
        // 內(nèi)容
        html.push('<div class="way-content">')
        html.push('<div class="way-list">')
        html.push('<ul>')
        html.push('<li><p class="gray-tit">航班號 <span class="black gap"> ' + data[i].flightId + '</span></p>')
        html.push('</li>')
        html.push('<li><p class="gray-tit">承運人 <span class="black gap">' + data[i].carryPerson + '</span></p>')
        html.push('</li>')
        html.push('<li><p class="gray-tit">通道號 <span class="black gap">' + compareNull(data[i].channelId, 1) + '</span></p>')
        html.push('</li>')
        html.push('<li><p class="gray-tit">代理人 <span class="black gap">' + compareNull(data[i].proxyPerson, 1) + '</span></p>')
        html.push('</li>')
        html.push('</ul>')
        html.push('<div class="way-plan">')
        html.push('<div class="plan-part">')
        html.push('<p class="plan-node">')
        html.push('<i class="spot green-spot"></i>')
        html.push('<span class="gray-tit" style="margin-right: 16px;">運單開始時間</span>')
        html.push('<span class="black">' + compareNull(data[i].startTime, 2) + '</span>')
        html.push('</p>')
        html.push('<p class="plan-node">')
        html.push('<i class="spot red-spot"></i>')
        html.push('<span class="gray-tit" style="margin-right: 16px;">最近暫停時間</span>')
        html.push('<span class="black">' + compareNull(data[i].lastPauseTime, 2) + '</span>')
        html.push('</p>')
        html.push('</div>')
        html.push('</div>')
        html.push('</div>')
        //相關(guān)圖片
        html.push('<div class="relation-img">')
        html.push('<p class="gray-tit">相關(guān)圖片</p>')
        html.push('<div class="img-list">')
        html.push('<div class="swiper-container">')
        html.push('<div class="swiper-wrapper" style="height: 100px;">')
        //這里是根據(jù)后臺不同單子對應(yīng)的不同圖片個數(shù)進行slider個數(shù)的push
        for(var j = 0; j < data[i].photos.length; j++) {
            html.push(
                '<div class="swiper-slide" style="width: 150px">' +
                '<img src="' + data[i].photos[j].photoPath + '" width="90%" style="border-radius: 5px;height: 100px;"  onclick="preImg(this)">' +
                '</div>'
            )
        }
        html.push('</div>')
        //swiper按鈕
        html.push('<div class="swiper-button-next"></div>')
        html.push('<div class="swiper-button-prev"></div>')
        html.push('</div>')
        html.push('</div>')
        html.push('</div>')
        html.push('</div>')

        html.push('<div class="hint">')
        if(data[i].status == 2 && isCheck == "true") {
            html.push('<div class="hint-content">')
            html.push(' <p class="hint-tit"><i class="hint-icon"></i>提示</p>')
            html.push('<p class="hint-txt">將貨物按照規(guī)范搬到傳送帶上赦肋,并開啟傳送帶開關(guān)必須結(jié)束當(dāng)前正在安檢的運單后块攒,才可以開始下一單')
            html.push('</p>')
            html.push('</div>')
        }
        html.push('</div>')
        html.push('<div class="way-footer">')
        if(data[i].status == 0 && isCheck == "false") {
            html.push('<div class="start-btn fot-blue" onclick="checkSecurity(this)" data-orderId="' + data[i].orderId + '">開始安檢</div>')
        } else if(data[i].status == 2 && isCheck == "true") {
            html.push('<div class="switch" onclick="stopSeurity(this)"  data-orderId="' + data[i].orderId + '"><span>暫停</span></div>')
            html.push('<div class="footer-btn fot-orange" onclick="showAlert(this)" data-orderId="' + data[i].orderId + '">結(jié)束安檢</div>')
        } else if(data[i].status == 3 && isCheck == "true") {
            html.push('<div class="orange-switch" onclick="showDialogAlertGo()"><span>開始</span></div>')
            html.push('<div class="footer-btn fot-gray">結(jié)束安檢</div>')
        } else if(data[i].status == 3 && isCheck == "false") {
            html.push('<div class="orange-switch" onclick="checkSecurity(this)" data-orderId="' + data[i].orderId + '"><span>開始</span></div>')
            html.push('<div class="footer-btn fot-gray">結(jié)束安檢</div>')
        } else if(data[i].status == 0 && isCheck == "true") {
            html.push('<div class="start-btn fot-gray" onclick="showDialogAlertGo()">開始安檢</div>')
        }
        html.push('</div>')
        html.push('</div>')
        html.push('</div>')
    }
    //填充內(nèi)容
    $('.scene-content').html(html.join(''))

接下來初始化swiper,然后在請求后臺數(shù)據(jù)成功后的回調(diào)函數(shù)調(diào)用fullOrder方法

//初始化swiper
$(function() {
 var mySwiper = new Swiper('.swiper-container', {
            slidesPerView: 3,
            prevButton: '.swiper-button-prev',
            nextButton: '.swiper-button-next',
            })
})

// 初始化訂單
function loadOrder() {
    $.ajax({
        type: "GET",
        url: Utils.url + "/order/getOrder_site" + '?timestamp=' + new Date().getTime(),
        contentType: "application/json;charset=UTF-8",
        dataType: 'json',
        success: function(data) {
            $('el-loading-mask').hide()
            fullOrder(data)         
        }
    })
}

結(jié)果發(fā)現(xiàn)swiper根本沒有被調(diào)用到佃乘,默默的mark一下囱井,在圖片多的情況下判斷swiper是否成功初始化看左右按鈕的顏色是否一深一淺就知道了。
正確初始化swiper的方法應(yīng)該是在fullOrder方法之后或者是在fullOrder里的element.html()之后趣避。由于swiper是需要先初始化再執(zhí)行庞呕,但這里是先生成swiper,所以需要在生成swiper之后再初始化程帕。

$('.scene-content').html(html.join('')) //填充之后初始化swiper
    var mySwiper = new Swiper('.swiper-container', {
        slidesPerView: 3,
        prevButton: '.swiper-button-prev',
        nextButton: '.swiper-button-next',
        observer: true, //修改swiper自己或子元素時千扶,自動初始化swiper
        observeParents: true, //修改swiper的父元素時,自動初始化swiper
        onSlideChangeEnd: function(swiper) {
            swiper.update();
            // mySwiper.startAutoplay();
            // mySwiper.reLoop();
        }
    })

只有這樣在頁面加載完后swiper才會被調(diào)用成功噠骆捧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澎羞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子敛苇,更是在濱河造成了極大的恐慌妆绞,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枫攀,死亡現(xiàn)場離奇詭異括饶,居然都是意外死亡,警方通過查閱死者的電腦和手機来涨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門图焰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蹦掐,你說我怎么就攤上這事技羔。” “怎么了卧抗?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵藤滥,是天一觀的道長。 經(jīng)常有香客問我社裆,道長拙绊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮标沪,結(jié)果婚禮上榄攀,老公的妹妹穿的比我還像新娘。我一直安慰自己金句,他們只是感情好檩赢,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著趴梢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪币他。 梳的紋絲不亂的頭發(fā)上坞靶,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音蝴悉,去河邊找鬼彰阴。 笑死,一個胖子當(dāng)著我的面吹牛拍冠,可吹牛的內(nèi)容都是我干的尿这。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼庆杜,長吁一口氣:“原來是場噩夢啊……” “哼射众!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晃财,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤叨橱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后断盛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罗洗,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年钢猛,在試婚紗的時候發(fā)現(xiàn)自己被綠了伙菜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡命迈,死狀恐怖贩绕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情壶愤,我是刑警寧澤丧叽,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站公你,受9級特大地震影響踊淳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一迂尝、第九天 我趴在偏房一處隱蔽的房頂上張望脱茉。 院中可真熱鬧,春花似錦垄开、人聲如沸琴许。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽榜田。三九已至,卻和暖如春锻梳,著一層夾襖步出監(jiān)牢的瞬間箭券,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工疑枯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辩块,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓荆永,卻偏偏與公主長得像废亭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子具钥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理豆村,服務(wù)發(fā)現(xiàn),斷路器骂删,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 一你画、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡單分配策略的問題地址空間不隔離內(nèi)存使用效率低程序運行的地址不確定 關(guān)于...
    SeanCST閱讀 7,802評論 0 27
  • RMI(即Remote Method Invok遠程方法調(diào)用)。在Java中桃漾,只要一個類實現(xiàn)了java.rmi.R...
    守住陽光閱讀 546評論 0 0
  • 目標(biāo):種出理想的伴侶 感恩冥想: 1坏匪、感恩今天同事提醒我一些注意的事項,讓我避免了一次可能會不小心發(fā)生的事情撬统。 2...
    小兔兔姐姐愛吃胡蘿卜閱讀 150評論 0 0
  • 燕子對房梁說:“謝謝你适滓,讓我壘了巢”。 房梁對燕子說:“謝謝你恋追,讓我看到了春天”凭迹。
    暉暉一二三閱讀 269評論 0 1