Подтвердить что ты не робот

Модальный диалог Bootstrap, связанный с событием show.bs.modal событие undefined. Как получить элемент clicked?

Кнопка, вызванная модальным диалогом: при нажатии кнопки событие запускается в результате результирующей справки о событиях e.relatedTarget undefined. Итак, как я могу получить кнопку вызова из обработчика? e, похоже, не содержит ссылок на вызывающую кнопку.

<!-- Button trigger modal -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

JQuery

$('#myModal').on('show.bs.modal', function (e) {
  console.log(e.relatedTarget) // do something...
})

Ссылка: http://getbootstrap.com/javascript/#modals

4b9b3361

Ответ 1

Взгляните на следующий пример Bootply.

При запуске события show, похоже, содержит правильную ссылку на e.relatedTarget.

$('#myModal').on('show.bs.modal', function (e) {
    var button = e.relatedTarget;
    if (button != null)
    {
        alert("Launch Button ID='" + button.id + "'");
    }
})

Взгляните на пример Bootply, чтобы узнать, отличается ли ваш собственный код от него. (Я скопировал исходный фрагмент кода Bootstrap непосредственно из ссылки , которую вы предоставили.)

Надеюсь, это поможет. Удачи.

Ответ 2

Это обходной путь. Вы можете открыть модальный код с помощью JS, а связанный с ним Target будет установлен. Вы не должны пропускать кнопку в качестве второго параметра для модального метода.

Вы сможете передавать данные (здесь адрес-цель)

$('.listing_btn').on 'click', ->
  $('.modal').modal('show', $(@))

$('#modal').on 'show.bs.modal', (event)->
   button = $(event.relatedTarget)
   address_id = button.data('address-target')
   console.log address_id 

Ответ 3

Спасибо Geo1004.. Я уже использовал JS для запуска события "show" на модальном, но мне не хватало второго аргумента. Таким образом, event.relatedTarget был undefined.

Если кто-то еще отправляется по маршруту JS (вместо атрибутов данных), я бы удостоверился, что вы отправляете кнопку в качестве объекта jQuery -

$( "#myModal" ).modal( "show", $( "#buttonBeingClicked" ) );

Ответ 4

У меня была такая же проблема, и я потратил весь вечер на исправление. Моя версия bootstrap.js была просто старой, а $(event.relatedTarget) недоступна для события show.bs.modal. Любой, у кого есть такая же проблема, сначала должен проверить его версию bootstrap. Затем просто придерживайтесь официального примера сайта: http://getbootstrap.com/javascript/#modals-related-target Вы найдете свою ссылку в $(event.relatedTarget).

Ответ 5

$('#myModal').on('show.bs.modal', function (e) {
   console.log($(e.relatedTarget)); // You will get the element you want! Cheers
})