當點擊編輯按鈕時,將數據傳遞給彈出的模態框。
如果當前的按鈕是在jsp中使用<c:foreach>標籤遍歷循環出來的,則在觸發Bootstrap對模態框內置的4個方法時,將獲取不到對象。
<button aria-hidden="true" data-toggle="modal" class="icon-pencil" data-target="#showinfo" data-photoid="${photo.photoid }" data-path="${photo.photoname}" data-remake="${photo.photoremake }" ></button> <div class="modal fade" id="showinfo" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" style="width: 600px;"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> <h4 class="modal-title" id="exampleModalLabel"> 圖片編號:<span id="photoid"></span> </h4> <input type="hidden" id="photoidhidd"> </div> <div class="modal-body"> <div class="form-group"> <img alt="" src="" id="imgs" width="500px" height="300px"> </div> <div class="form-group"> <label>圖片描述</label> <textarea style="width: 500px;" id="photoremake"></textarea> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="button" id="updateremake" class="btn btn-primary">Submit</button> </div> </div> </div> </div> </div>
$('#showinfo').on('show.bs.modal', function(event) { var button=$(event.relatedTarget); var photoid = button.data("photoid"); var url = button.data("path"); var remake = button.data("remake"); $("#photoid").html(photoid); $("#imgs").attr("src","/shoots/"+url); $("#photoremake").html(remake); })
當點擊按鈕時,會首先觸發show.bs.modal事件,本意是通過event.relatedTarget獲取到觸發事件的按鈕對象,然後通過獲取對象的dataset的值,將值傳遞給模態框;但是因爲按鈕是動態生成的所以取不到對象,通過一番研究最後沒有使用show.bs.modal事件,而是給button添加了一個onclick事件,執行如下方法:
function iii(event) { event = event ? event : window.event; var button = event.srcElement ? event.srcElement : event.target; var photoid = button.dataset.photoid; var url = button.dataset.path; var remake = button.dataset.remake; $("#photoid").html(photoid); $("#photoidhidd").val(photoid); $("#imgs").attr("src", "/shoots/" + url); $("#photoremake").val(""); $("#photoremake").val(remake); }