Bootstrap模式对话框,show.bs.modal事件relatedTarget未定义.如何获得点击元素?

eyn*_*eyn 22 events dialog modal-dialog twitter-bootstrap fuelux

Button调用的模式对话框:单击按钮时,将触发事件,结果事件引用e.relatedTarget未定义.那么,如何从处理程序中获取调用按钮?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>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

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

参考:http://getbootstrap.com/javascript/#modals

Lás*_*ler 20

看看下面的Bootply示例.

运行时,show事件似乎包含一个适当的引用e.relatedTarget.

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

看看Bootply示例,看看你自己的代码是否与它有所不同.(我直接从您提供的链接复制了原始的Bootstrap示例代码段.)

我希望这有帮助.祝好运.

  • [link](http://www.bootply.com/yPkQNLIqeI)上的示例是否按预期用于问题目的?我的意思是我从来没有从与e.relatedTarget相关的警报中获取消息.该对象似乎总是NULL. (4认同)

JDe*_*518 15

谢谢Geo1004 ..我已经使用JS来触发模态上的"show"事件,但我错过了第二个参数.所以event.relatedTarget是未定义的.

如果其他人正在使用JS路由(而不是使用数据属性),我会确保您将按钮作为jQuery对象发送 -

$( "#myModal" ).modal( "show", $( "#buttonBeingClicked" ) );
Run Code Online (Sandbox Code Playgroud)


小智 9

这是一种解决方法.您可以使用JS打开模态,并设置relatedTarget.你不应该错过传递按钮作为'模态'方法的第二个参数.

您将能够传递数据引用(此处为address-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 
Run Code Online (Sandbox Code Playgroud)