2016-01-24 3 views
0

Получаю некоторые данные после вызова AJAX, и я заполняю список.Загрузите динамический контент в bootstrap modal

Но когда элемент щелкнул по этому списку, я хочу показать модальную информацию об этом товаре (например, изображение, насколько он популярен - сколько раз он был нажат - автор и т. Д.). Я могу сделать это в уродливом виде:

$('#target').append(
    $('<div class = "col-md-4" data-toggle = "modal" data-target = "#myModal" onClick = someFunction(' + someArgument + ')>' + someText + '</div>' + 
     '<div class = "modal fade" id = "myModal" role = "dialog">' + '<div class = "modal-dialog modal-lg">' + 
     '<div class = "modal-content"> <div class = "modal-header"> <h4 class = "modal-title">' + someTitle + '</h4></div>' + 
     '<div class = "modal-body">Description: ' + description + ' Author: ' + author + '<br</br>' + 
     '<img src = "' + imgSource + '" class = "modal-dialog modal-lg" style = "max-width: 25%;">' + 
     '<button type = "button" class = "close" data-dismiss = "modal" id = "myModal">&times;</button>' + 
     '<div class = "modal-footer"></div></div></div></div></div>')); 

Это некрасиво, подвержены ошибкам, трудно поддерживать, трудно читать. Можно ли это сделать более элегантно?

ответ

1
  • Во-первых, ваш код должен быть написан внутри функции show.bs.modal.

    $('#target').on('show.bs.modal', function (e) { 
        // do something... 
    }) 
    

Смотреть это: http://getbootstrap.com/javascript/#modals-events

  • Во-вторых, я предпочитаю использовать JQuery для создания DOM-элементов, как этот

    $("<div>").addClass("col-md-4").attr("data-target","#myModal").append(
    $("<div>").addClass("modal fade")//add more here 
    ); 
    
+0

Это, кажется, делает вещи более элегантно и легко читается. Благодарю. – user3804799

Смежные вопросы