2015-11-01 84 views
3

我一直有一些JQuery代碼的問題。 我試圖做一個「動態」的網站,所以每次你點擊一個鏈接('一個'元素有一個'鏈接'屬性),我的代碼需要'鏈接'屬性並將其傳遞給jQuery的load()功能。事情是,我想讓用戶知道內容正在加載,所以我想我可以在開始加載之前顯示一個模式,並在完成時隱藏它,但它不起作用。我第一次點擊一個鏈接時,模態停留在那裏,並且不會消失。但是,從第二次開始,我點擊任何鏈接,一切都完美無缺。從jQuery隱藏bootstrap模式不會工作第一次

爲什麼它只是第一次關閉?

$(document).on("click", "[link]", function() { 
    $("#cargando").modal('show'); 
    $('#contenido').load($(this).attr('link'), function() { 
     $('#cargando').modal('hide'); 
     $('.modal-backdrop').hide(); 
    }); 
}); 

額外的信息:這個代碼和HTML模式是一起在一個名爲dyn.html文件,該文件包括在頁面的其餘部分的結束。

編輯,模態代碼:

<div class="modal modal-static fade" id="cargando"> 
<div class="modal-dialog"><div class="modal-content"> 
<div class="modal-body"><div class="text-center"> 
<h4>Cargando...</h4> 
</div></div></div></div></div> 

編輯,它適用於:

$(document).on("click", "[link]", function() { 
$('#cargando').modal('show'); 
$('#contenido').load($(this).attr('link'), function() { 
$('#cargando').hide(); 
$('.modal').hide(); 
$('.modal-backdrop').hide(); 
}); 
}); 

它的混亂,但它是工作的第一件事。

+0

你可以嘗試將'modal('show')'和'modal('hide')'替換爲'modal('toggle')'嗎? –

+0

它現在加載兩個模態。每次。有時超過兩個。 –

+0

你能提供一個鏈接到你的網站,或在小提琴中重現嗎? –

回答

0

那麼,我一直在這種情況。但是,這裏是我發現的,我試圖避免在模態想要彈出時使用模態('show'),所以我更喜歡將模態鏈接到元素並在該元素上設置正確的屬性,並且模態會彈出。

<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button> 

所以試試這個,讓我知道結果。不要使用

$("#cargando").modal('show'); 
+0

同樣的問題,但值得一提的是該函數的第二行工作(「$('。modal-backdrop')。hide();」)。我也試圖「強制」它,通過將顯示樣式更改爲無,但它也不起作用。 –

+0

請不要將它從jquery函數中隱藏起來,請查看這個例子http://www.w3schools.com/bootstrap/bootstrap_modal.asp。我認爲你在錯誤的地方調用隱藏函數。如果你能提供給我們你的完整代碼,那會更好。 – Ehsan

+0

我相信這個問題可能源自您的單擊事件綁定被嵌套。檢查這個問題http://stackoverflow.com/questions/22631182/bootstrap-modal-button-click-event-not-fired-on-first-time?rq=1 – Ehsan

1
$('.modal').hide(); 

通過應用超時功能將這段代碼。所以會是這樣。

setTimeout(function(){ 
    $('.modal').hide(); 
},100); 

這裏100是超時期限。