Javascript 如何获取Twitter引导模式的invoker元素?

Javascript 如何获取Twitter引导模式的invoker元素?,javascript,twitter-bootstrap,modal-dialog,Javascript,Twitter Bootstrap,Modal Dialog,我有一个用于调用模态的a元素: <a class="btn" data-toggle="modal" data-target="#myModal" href="http://some-url" >Launch Modal</a> 我的问题是:如何从我的事件订阅者函数中访问调用了模态的a元素?目前它还不可用。如果您想自己编辑引导模式代码,则需要对其进行功能请求和解决方法 请参见正如您所说,我遇到了一个必须绑定一些与调用程序相关的数据的情况。 我通过将单击事件绑定到它并处理

我有一个用于调用模态的a元素:

<a class="btn" data-toggle="modal" data-target="#myModal" href="http://some-url" >Launch Modal</a>

我的问题是:如何从我的事件订阅者函数中访问调用了模态的a元素?

目前它还不可用。如果您想自己编辑引导模式代码,则需要对其进行功能请求和解决方法


请参见

正如您所说,我遇到了一个必须绑定一些与调用程序相关的数据的情况。 我通过将单击事件绑定到它并处理如下数据来解决此问题:

调用者

这样,您可以按照自己的意愿处理与调用程序相关的数据。

您必须听:

当然,您可以将show.bs.modal替换为show.bs.modal或它们触发的任何其他事件。
请注意,这是针对Bootstrap 3.0.0的。如果您使用的是2.3.2,我想您需要去掉.bs.modal。我喜欢这个解决方案的地方是:您不必记住谁是这个、self、那个和其他代理调用解决方法。当然,您必须测试href属性是否不是动态模式加载选项的真实链接。

由于event.relatedTarget,它在Bootstrap 3.0.0中得到了解决


modal元素有一个名为modal的数据对象,它保存传递的所有选项。您可以在触发模态的元素上设置“source”数据属性,将其设置为源的ID,然后稍后从options变量中检索它

触发因素将是:

<a id="launch-modal-1" class="btn" data-toggle="modal" data-target="#myModal" href="http://some-url" data-source="#launch-modal-1">Launch Modal</a>

$a[href='myModal']将选择该标记。这就是你要找的吗?不,实际上不是。因为它可以是任何东西,而不是mymodal。我要找的是event.relatedTarget或event.OriginalTarget之类的东西。它启动模式mymodal不是必须是mymodal吗?您可以用一个变量替换mymodal,该变量包含您所处事件的元素的ID。当然,模态的内容将使用ajax加载。因此,可以有多个a元素指向同一模态。我需要找到单击的a元素,获取其href属性并将其加载到模式中。我不理解。。。是否希望在单击链接时触发事件?为什么模态的加载方式很重要?如果有多个链接启动一个模式,是否需要从单击的链接中获取另一个唯一属性?有一个已提交,但由于某些原因被拒绝。这是我非常想看到的一个特性。如果我想知道调用模态隐藏的元素该怎么办?好问题axel,目前似乎还没有这方面的内容。优雅的解决方案,比在元素上注册单击事件要好得多这一点最初似乎对我有效,但一旦我有了不止一个来源,它就停止工作了。模态似乎保留了第一次调用时的选项,因此无论您首先单击哪个锚点,它都将在所有后续操作中使用该锚点的数据源。对于我来说,这是最好的选项。是的,在2.3.2中,您需要删除.bs.modal.这是一个非常聪明的解决方案!我希望我能多次投票支持这个解决方案。我的问题是一个模态是由多个元素触发的,我希望在模态中单击一个按钮后触发元素。尽管使用show.bs.modal和event.relatedTarget的传统方法是可行的,但我最终还是会进行不必要的解除绑定调用和/或影响性能。再次干杯!
$('#myModal').on('hidden', function () {
  // do something…
})
<img id="element" src="fakepath/icon-add.png" title="add element" data-toggle="modal" data-target="#myModal" class="add">
$('#element').on('click', function () { // Had to use "on" because it was ajax generated content (just an example)
    var self = $(this);
});
$('[data-toggle="modal"]').on('click', function() {
    $($(this).attr('href')).data('trigger', this);
});
$('.modal').on('show.bs.modal', function() {
    console.log('Modal is triggered by ' + $(this).data('trigger'));
});
$('#your-modal').on('show.bs.modal', function (e) {
  var $invoker = $(e.relatedTarget);
});
<a id="launch-modal-1" class="btn" data-toggle="modal" data-target="#myModal" href="http://some-url" data-source="#launch-modal-1">Launch Modal</a>
$('#myModal').on('hidden', function () {
  var modal = $(this).data('modal');
  var $trigger = $(modal.options.source);
  // $trigger is the #launch-modal-1 jQuery object
});